我使用spark repartition
来更改dataframe
中的分区数。
在重新分区后写入数据时,我看到已经创建了不同大小的镶木地板文件。
以下是我用来重新分区的代码
df.repartition(partitionCount).write.mode(SaveMode.Overwrite).parquet("/test")
大多数大小为KB的分区,其中一些分区大约为100MB,这是我希望每个分区保留的大小。
这是一个示例
20.2 K /test/part-00010-0957f5aa-1f14-4295-abe2-0aacfe135444.snappy.parquet
20.2 K /test/part-00011-0957f5aa-1f14-4295-abe2-0aacfe135444.snappy.parquet
99.9 M /test/part-00012-0957f5aa-1f14-4295-abe2-0aacfe135444.snappy.parquet
现在,如果我打开20.2K parquet
个文件并执行coun
t操作,则结果为0
。对于99.9M file
,相同的count
操作会给出一些非零结果。
现在根据我对repartition
中的dataframe
的理解,它会进行一次完整的随机播放,并尝试保持每个分区的大小相同。然而,上述例子与此相矛盾。
有人可以帮我。