gpt4 book ai didi

performance - 在 Apache Spark 中对巨大/大型 RDD 执行的最佳或最轻量级/高效/最便宜的 RDD 操作是什么

转载 作者:行者123 更新时间:2023-12-05 04:11:42 25 4
gpt4 key购买 nike

我是 Apache Spark 的新手。

下面是演示我的示例代码的代码片段。

val x = 5
val arrayVal = (1 to 100000)
val rdd1 = sc.parallelize(arrayVal, x)//Has Huge RDD of Min 10000 to 100000
var rdd2 = rdd1.map(x => (x, x))
rdd2 = rdd2.cache()
rdd2.count()
val cartesianRDD = rdd2.cartesian(rdd2)
var filteredRDD = cartesianRDD.filter(f => (f._1._1 < f._2._1))
filteredRDD = filteredRDD.repartition(x/2)
rdd2 = rdd2.unpersist(false)
filteredRDD.persist(StorageLevel.MEMORY_ONLY)//To avoid re-calculation
filteredRDD.count()

正如我所指望的那样,RDD 需要很多分钟来计算 RDD。我想知道触发 RDD 转换的最好或最有效/最便宜/轻量级的方法是什么。

我还尝试了 rdd.take(1)rdd.first() 结果相同。

最终我的目标是减少任何这些操作所花费的时间。这样可以减少总执行时间。

提前致谢。

最佳答案

rdd.first() 是您可以拥有的最便宜的一个,因为它只具体化了第一个分区。

实现所有分区的成本最低的操作是 rdd.forEachPartition{_=>_}

Ultimately my goal is to reduce the time taken by the any of these action. So that total time of execution could be reduced.

但是,您采取的行动不会影响前面步骤所花费的时间。如果你想减少总时间,你必须优化其他东西。

关于performance - 在 Apache Spark 中对巨大/大型 RDD 执行的最佳或最轻量级/高效/最便宜的 RDD 操作是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com