У меня есть следующая искра, пытаясь сохранить все в памяти:
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 ГБ Shuffle пишут здесь, записывается ли она на диск или в память?
Кроме того, почему на диске все еще выпадает 15,4 Г данных, в то время как я специально прошу сохранить их в памяти?
Спасибо!