В Spark слово «раздел» относится к разделам памяти и разделам диска. df_partitioned
имеет 80 разделов памяти и 12 разделов диска. repartition
и coalesce
изменяют количество разделов памяти, как описано здесь . partitionBy
изменяет количество разделов диска, как описано здесь .
Разделы памяти и разделы диска разные, но терминология заставляет их звучать одинаково, так что вы по понятным причинам запутались.
Все они будут записывать разное количество файлов:
// approach 1
df
.repartition(col("ColumnX"))
.write
.partitionBy("ColumnX")
.parquet(outputPath)
// approach 2
df
.repartition(5)
.write
.partitionBy("ColumnX")
.parquet(outputPath)
// approach 3
df
.repartition(8, col("ColumnX"), rand)
.write
.csv(outputPath)