Spark删除所有现有分区,同时覆盖覆盖写入空数据帧。
下面有一个代码可以将数据写入每天运行的s3。
这在有新分区值时动态添加新分区,但是当数据框为空时,它将删除所有分区。
我必须在此处使用“覆盖”,以避免重复数据。 (没有附加选项)
df.write
.partitionBy("year", "month", "day")
.mode("overwrite")
.parquet("s3://..../table1/")
我可以在写入之前检查数据帧是否为空,但这会增加开销。
我觉得这种行为很奇怪,因为覆盖应该只覆盖匹配的分区。
处理这种情况的正确方法是什么?
注意: 此问题与以下问题不同,因为我的问题特定于空数据框并写入S3(而不是任何表),并且以下问题的解决方案不起作用,因为属性“ spark.sql.sources.partitionOverwriteMode”为已经设置为“动态”。