将Spark DataFrame保存到按日期分区的Parquet

时间:2019-10-02 12:40:48

标签: apache-spark apache-spark-sql parquet aws-glue

我有一个巨大的数据框,其中包含几列,其中之一是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之前没有进行任何分区,所以我猜速度应该有点相似,因为每个执行者都应该将其自己的分区保存到特定日期?我在这里想念什么?

0 个答案:

没有答案