Как повторно разбить фрейм данных pyspark?


data.rdd.getNumPartitions() # output 2456

Тогда я делаю
data.rdd.repartition(3000) Но ...
data.rdd.getNumPartitions() # выход все еще 2456

Как изменить количество разделов. Одним из подходов может быть сначала преобразование DF в rdd,его перераспределение, а затем преобразование rdd обратно в DF. Но это отнимает много времени. Кроме того, увеличение числа разделов делает операции более распределенными и поэтому более быстрыми? Спасибо

2 3

2 ответа:

Вы можете проверить количество разделов:

data.rdd.partitions.size

Чтобы изменить количество разделов:

newDF = data.repartition(3000)

Вы можете проверить количество разделов:

newDF.rdd.partitions.size

Остерегайтесь перетасовки данных при перераспределении, а это дорого. Взгляните на coalesce, Если это необходимо.

print df.rdd.getNumPartitions()
# 1


df.repartitions(5)
print df.rdd.getNumPartitions()
# 1


df = df.repartitions(5)
print df.rdd.getNumPartitions()
# 5

См. Spark: The definitive Guide Глава 5-основные структурные операции
ISBN-13: 978-1491912218
ISBN-10: 1491912219