spark parquet使用重分区而不使用partitionby的文件数

oaxa6hgo  于 2021-05-29  发布在  Spark
关注(0)|答案(0)|浏览(239)

在准备一个认证时,我正在刷新,并注意到这是一个小型数据集的Dataframe编写器功能。
一个简单的循环分区示例,在重新分区后仅填充1个分区—在这个简单的示例中:

val y = (1 to 5).toList
val yDF = y.toDF("number")
val yDF2 = yDF.repartition(8)      // Goes from 5 to 8 partitions, round-robin, only 1 partition filled
yDF2.rdd.partitions.size           // 8 partitions, only 1 filled
yDF2.rdd.glom().collect()          // res141: Array[Array[org.apache.spark.sql.Row]] = Array(Array(), Array(), Array(), Array(), Array(), Array(), Array([1], [2], [3], [4], [5]), Array())

yDF2.write.mode("overwrite").parquet("some_parts_data.parquet")

这会产生两个文件。但在本例中,只有一个分区包含所有数据。为什么会这样?
如果我在8个分区上有12个值,它会写8个分区/文件,作为备用。
当然是Parquet地板。好奇。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题