按日期在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 不能根据其仅在读取文件时起作用的文档使用 .