【发布时间】:2015-11-19 12:17:44
【问题描述】:
我有以下 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的数据溢出到磁盘,而我特意要求将它们保留在内存中?
谢谢!
【问题讨论】:
标签: apache-spark shuffle rdd persist