按日期在spark spark parquet too many small files中对数据框进行分区时:
df.repartition(df(date)).write.partitionBy("date").parquet("myFile")
我最终得到一个包含每天一个文件夹的镶木地板文件,非常棒 . 但是, repartition(df(date)).
也会导致每天一个分区大约为47GB . 如何继续每天维护一个文件夹(用于分区修剪)但是内部有多个较小的文件(HDFS块大小)
编辑
注意按小时划分会导致数据倾斜,因为夜间活动较少 .
此外,spark write to disk with N files less than N partitions df.write.option("maxRecordsPerFile", 50)
可能很有趣,假设有可能找到这个神奇的数字 .
spark.sql.files.maxPartitionBytes
不能根据其仅在读取文件时起作用的文档使用 .