Apache Spark 动态分区 OverWrite 问题
2020-10-19 本文已影响0人
团团饱饱
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`) --修改分区