使用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命令并通过打开外壳执行该命令。它为分区表中的旧分区工作并更改了该表。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...