Я использую искру для обработки моих данных. У меня есть пара RDD, которая распространяется на нескольких исполнителей. Размер данных составляет 10 ТБ, а количество разделов - 4000. Общее количество исполнителей - 100, а память каждого исполнителя - 20 ГБ.
Таким образом, размер каждого раздела будет около 128 МБ.
т.е.
pairedRDD = sc.textFile("myhost:9000/data/largedataset.txt", 4000);
resultRdd = pairedRDD.reduceByKey(lambda (x, y) : (x + y));
Данные в файле похожи на
1 Apple
1 Apple
2 Mango
1 Apple
3 Banana
У нас всего 3 ключа. Таким образом, все связанные ключи будут перемещены в один и тот же раздел. Поскольку у нас один раздел размером 512 МБ и у нас 4000 разделов, это приведет к любой ошибке OOM или будет выполнено без ошибок.
Если он будет выполнен без ошибок, то как Spark обрабатывает размер данных внутренне