在准备一个认证时,我正在刷新,并注意到这是一个小型数据集的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地板。好奇。
暂无答案!
目前还没有任何答案,快来回答吧!