Ответ 1
Вы должны различать две разные вещи:
- разделение как распределение данных между разделами в зависимости от значения ключа, которое ограничено только
PairwiseRDDs
(RDD[(T, U)]
). Это создает связь между разделом и набором ключей, которые могут быть найдены на определенном разделе. -
разбиение на разделы как разбиение входных данных на несколько разделов, где данные просто делятся на куски, содержащие последовательные записи для включения распределенных вычислений. Точная логика зависит от конкретного источника, но это либо количество записей, либо размер куска.
В случае
parallelize
данные равномерно распределяются между разделами с использованием индексов. В случаеHadoopInputFormats
(например,textFile
) он зависит от таких свойств, какmapreduce.input.fileinputformat.split.minsize
/mapreduce.input.fileinputformat.split.maxsize
.
Таким образом, схема разбиения по умолчанию просто отсутствует, поскольку разделение не применимо ко всем RDD. Для операций, требующих разбиения на PairwiseRDD
(aggregateByKey
, reduceByKey
и т.д.), По умолчанию используется использование хэш-разбиения.