spark scalaDataframe写入程序插入以覆盖

vwhgwdsa  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(347)

我尝试将Dataframe的内容写入现有的分区托管配置单元表,如下所示:

outputDF.write.mode("Overwrite").insertInto(targetTable)

目标表是兽人,我想保留它。使用saveastable会将表拖放并重新创建为parquet(请参见此处:saveastable和insertinto在不同的savemode中有何区别?)。
问题是对于我的一些表,我需要覆盖整个表的数据(类似于截断),而不仅仅是特定的分区。
我不清楚在这种情况下是否支持覆盖,如果支持,我做错了什么。sparksession设置以下配置值:

.config("spark.sql.sources.partitionOverwriteMode", "static"/"dynamic")
.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")

我错过什么了吗?
另外,我怀疑这可以通过SQLAPI实现,但我正在尝试避免它。
标准差_

kqhtkvqz

kqhtkvqz1#

// 1. 
outputDF.write.format("parquet").mode("overwrite").saveAsTable(targetTable)
// 2. 
import org.apache.spark.sql.{SaveMode}
outputDF
 .write
 .format("parquet")
 .mode(SaveMode.Overwrite)
 .saveAsTable(targetTable)

相关问题