我有一个巨大的数据框,其中包含几列,其中之一是callDate(DateType)。我想将该数据帧保存到S3的实木复合地板上,并通过此call_date列对其进行分区。这将是我们项目的初始负载(包含历史数据),随后在生产中,一天结束后,应该添加新分区,而不删除旧分区。
在我省略.partitionBy方法的情况下,作业在12分钟内完成。动作示例:
allDataDF.write.mode("overwrite").parquet(resultPath)
另一方面,当我这样做时:
spark.conf.set("spark.sql.sources.partitionOverwriteMode","dynamic")
allDataDF.write.mode("overwrite").partitionBy("call_date").parquet(resultPath)
工作无法在30分钟内完成。我在partitionBy之前没有进行任何分区,所以我猜速度应该有点相似,因为每个执行者都应该将其自己的分区保存到特定日期?我在这里想念什么?