问题描述
我的输入数据框如下: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命令并通过打开外壳执行该命令。它为分区表中的旧分区工作并更改了该表。