【发布时间】:2021-05-23 08:13:06
【问题描述】:
我正在尝试将数据帧的内容写入现有的分区托管 Hive 表,如下所示:
outputDF.write.mode("Overwrite").insertInto(targetTable)
目标表是 ORC,我希望保留它。使用 saveAsTable 会将表删除并重新创建为镶木地板(请参阅此处:What are the differences between saveAsTable and insertInto in different SaveMode(s)?)。
问题在于我的某些表需要覆盖整个表数据(类似于截断),而不仅仅是特定分区。
我不清楚在这种情况下是否支持覆盖,如果支持,我做错了什么。 SparkSession 设置以下配置值:
.config("spark.sql.sources.partitionOverwriteMode", "static"/"dynamic")
.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")
我错过了什么吗?
另外,我怀疑这可以通过 SQL API 实现,但我试图避免它。
SD_
【问题讨论】:
标签: scala apache-spark hive apache-spark-sql