gpt4 book ai didi

apache-spark - Spark : Difference between Shuffle Write, Shuffle 溢出(内存),Shuffle 溢出(磁盘)?

转载 作者:行者123 更新时间:2023-12-03 11:55:25 30 4
gpt4 key购买 nike

我有以下 Spark 作业,试图将所有内容保留在内存中:

val myOutRDD = myInRDD.flatMap { fp =>
val tuple2List: ListBuffer[(String, myClass)] = ListBuffer()
:

tuple2List
}.persist(StorageLevel.MEMORY_ONLY).reduceByKey { (p1, p2) =>
myMergeFunction(p1,p2)
}.persist(StorageLevel.MEMORY_ONLY)

但是,当我查看作业跟踪器时,我仍然有很多 Shuffle Write 和 Shuffle 溢出到磁盘......
Total task time across all tasks: 49.1 h
Input Size / Records: 21.6 GB / 102123058
Shuffle write: 532.9 GB / 182440290
Shuffle spill (memory): 370.7 GB
Shuffle spill (disk): 15.4 GB

然后作业失败,因为 "no space left on device" ...我想知道 532.9 GB 随机写入 在这里,它是写入磁盘还是内存?

还有,为什么还有15.4G的数据溢出到磁盘,而我特意要求将它们保留在内存中?

谢谢!

最佳答案

persist如果您不多次访问 RDD,则代码中的调用将完全浪费。如果您从不访问它,那么存储它有什么意义?除了可以通过缓存输出来避免重新洗牌之外,缓存与洗牌行为无关。

Shuffle 溢出由 spark.shuffle.spill and spark.shuffle.memoryFraction 控制配置参数。如 spill启用(默认情况下)然后如果它们开始使用超过 memoryFraction 给定的数量,shuffle 文件将溢出到磁盘。 (默认为 20%)。

指标非常困惑。我的阅读code是“随机溢出(内存)”是当东西溢出到磁盘时被释放的内存量。 code对于“随机溢出(磁盘)”看起来像是实际写入磁盘的数量。由 code对于“随机写入”,我认为它是直接写入磁盘的数量——而不是排序器的溢出。

关于apache-spark - Spark : Difference between Shuffle Write, Shuffle 溢出(内存),Shuffle 溢出(磁盘)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210011/

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