我必须通过四键对地理数据进行分区。基本上所有数据都很平衡,但是很少有分区比其他分区大500倍。因此,这会导致非常不平衡的分区阶段,例如3500个任务中的20-30个要比其他任务慢98%。在这种情况下,有什么好的策略吗?
我接下来要做:
stage.repartition(partitionColumns.map(new org.apache.spark.sql.Column(_)):_*)
.write.partitionBy(partitionColumns:_*)
.format("parquet")
.option("compression", "gzip")
.mode(SaveMode.Append)
.save(destUrl)
答案 0 :(得分:1)
.repartition
是不必要的,可能导致了问题。
如果不进行设置而仅使用.write.partitionBy...
,您仍将获得相同的目录结构,每个目录中将只有多个文件。