2014-11-08 2 views
1

Так что я использую функцию groupByKey в искры, но ее не распараллеливают, так как я вижу, что во время ее выполнения используется только 1 ядро. Кажется, что данные, с которыми я работаю, не позволяют распараллеливать. Есть ли способ искры знать, являются ли входные данные дружественными к параллелизации или если это не правильный RDD?Есть ли способ проверить, является ли переменная в Spark параллелизуемой?

ответ

1

Блок распараллеливания в Spark является «разделом». То есть, RDD разделяются на разделы, и преобразования применяются к каждому разделу параллельно. Как данные RDD распределяются по разделам, определяется Partitioner. По умолчанию используется HashPartitioner, который должен работать нормально для большинства целей.

Вы можете проверить, сколько разделов ваш РДД разделяется на использовании:

rdd.partitions // Array of partitions 
+0

Можете ли вы сказать мне разницу между РДУ и pipelinedRDD, потому что, когда я пытаюсь вызвать метод разбиения, я получаю ошибку что pipelinedRDD не имеет функции разделов. – MetallicPriest

+1

Похоже, что API Python не имеет метода 'rdd.partitions'. Попробуйте 'rdd.getNumPartitions', чтобы получить nr разделов. – maasg

Смежные вопросы