spark overwrite分区覆盖导致全表覆盖问题

比如我们目前有两个分区 2019-03-22 和 2019-03-23 两个分区,现在我们使用 saveAsTable 想覆盖其中一天的分区,结果却是将整个所有分区遮盖了。重建了整个目录,这明显不是我们想要的到的结果。

试过下图还是不行

set hive.exec.dynamic.partition=true; 
set hive.exec.dynamic.partition.mode=nonstrict; 

然后看到stackOverFlow上有同样问题,设置以下。但是还是没有解决。

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

用 hive 的语法来 动态overwrite 分区。完美解决

df.createOrReplaceTempView("temp_table_1");
spark.sql("""  insert overwrite table target_table partition(year,day) select name,age,sex,created_ts,updated_ts,year,day from temp_table_1 """);
	


    

 

 

你可能感兴趣的:(Spark算子)