Почему `getNumPartitions()` не дает мне правильное количество разделов, указанное в `repartition`?

У меня есть textFile в и рдд вроде так: sc.textFile(<file_name>),

Я пытаюсь перераспределить RDD для ускорения обработки:

sc.repartition(<n>),

Неважно, что я положил в <n>, кажется, не меняется, как указано:

RDD.getNumPartitions() всегда печатает один и тот же номер (3) не важно что.

Как изменить количество разделов для увеличения производительности?

1 ответ

Решение

Это потому, что СДР неизменны. Вы не можете изменить разделы СДР, но вы можете создать новый с нужным количеством разделов.

scala> val a = sc.parallelize( 1 to 1000)
a: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at  parallelize at <console>:21
scala> a.partitions.size
res2: Int = 4
scala> val b = a.repartition(6)
b: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[4] at repartition at <console>:23
scala> a.partitions.size
res3: Int = 4
scala> b.partitions.size
res4: Int = 6
Другие вопросы по тегам