Pyspark正在更新一个外部Hive表的特定分区



我试图使用pyspark覆盖hive表的特定分区,但每次我试图这样做时,所有其他分区都被擦除。我通过几个帖子在这里关于这个和实施的步骤,但似乎我仍然得到和错误。我使用的代码是

spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
spark.conf.set("hive.exec.dynamic.partition", "true")
spark.conf.set("hive.exec.dynamic.partition.mode", "nonstrict")
df.write.format('parquet').mode('overwrite').partitionBy('col1').option("partitionOverwriteMode", "dynamic").saveAsTable(op_dbname+'.'+op_tblname)

最初分区是col1=m和col1=n,当我试图只覆盖col1=m分区时,它也擦除了col1=n。

Spark版本为2.4.4

谢谢你的帮助。

经过多次尝试和错误,这是我尝试的方法

spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
op_df.write.format(op_fl_frmt).mode(operation_mode).option("partitionOverwriteMode", "dynamic").insertInto(op_dbname+'.'+op_tblname,overwrite=True)

当我尝试使用saveAsTable时,无论我做什么,它总是擦去所有的值。并且只设置标记"spark.sql.sources"。partitionOverwriteMode' to dynamic似乎不起作用。因此,使用insertInto和其中的覆盖标志来实现所需的输出。

最新更新