【发布时间】:2021-12-11 01:39:45
【问题描述】:
我正在寻找一种将列 spark DF 附加到现有 Hive 表的方法,我正在使用下面的代码覆盖该表,但仅在 df 模式和 hive 表模式相等时才有效,但有时我需要添加一列,因为模式不匹配它不起作用。 有没有办法将 df 作为列附加?
或者我必须在 spark.sql() 中创建一个 ALTER TABLE ADD 列?
temp = spark.table('temp')
temp.write.mode('overwrite').insertInto(datalab + '.' + table,overwrite=True)
希望我的问题可以理解,谢谢。
【问题讨论】:
-
为什么不使用
saveAsTable而不是insertInto?temp.write.saveAsTable(f"{datalab}.{table}", mode="overwrite") -
与
overwrite=True,你的意思是要覆盖temp表吗? -
SaveAsTable 一直显示这个错误,我只能通过使用 insertInto 和 Alter Table 来避免:“无法创建托管表('
db.table')。关联的位置('hdfs://path/table') 已经存在。;" -
通过覆盖我的意思是我想用我当前的df覆盖hive表,因为它需要以相同的名称保存并且内容已经改变
标签: pyspark hive apache-spark-sql