使用pyspark运行时,Hive Alter Table添加列问题

问题描述

我的输入数据框如下:df_input

|a |b |c |mon|src_id|
|5 |2 |3 |1  |A     |
|1 |5 |4 |2  |A     |
|1 |5 |3 |2  |B     |

在mon和src_id上分区。

现在,我想向现有分区添加一个新列。加载到表中后,尝试使用以下命令:

df_input.write.mode("overwrite").partitionBy().format("parquet").saveAsTable(db_name.table_name)
spark.sql("ALTER TABLE data_base.table_name ADD COLUMNS (d long) CASCADE")

但是出现以下错误

pyspark.sql.utils.ParseException" "\nextraneous input 'CASCADE' exception <EOF>(line 1,pos 63)\n\n== sql ==\nALTER TABLE data_base.table_name ADD COLUMNS (d long) CASCADE\n .......

尝试但未成功在alter table命令中查找问题所在。

解决方法

使用url连接到beeline的spark和使用在python中导入的process命令并通过打开外壳执行该命令。它为分区表中的旧分区工作并更改了该表。