Apache Spark 动态分区 OverWrite 问题

1、问题:spark Dataframe :

partition_day.write.partitionBy("day").mode(SaveMode.Overwrite).format("orc")

.saveAsTable("test.partition_day")

现象:历史数据会被删除,插入新数据。


2、解决方案:

从 Spark 2.3 开始,Spark 给我们提供了名为 spark.sql.sources.partitionOverwriteMode 的参数,它有两个值:STATIC 和 DYNAMIC。默认值是 STATIC,也就是默认会删除所有分区或者部分分区,这个是为了兼容 Spark 2.3 之前的行为。关于这个 ISSUE 可以参见 SPARK-20236,对应的 Patch 为 这里

spark.conf.set("spark.sql.sources.partitionOverwriteMode","dynamic")

或者使用hive sql  

INSERT OVERWRITE TABLE ctest.partition_dayPARTITION (`day`) --修改分区

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容