【发布时间】:2018-06-08 10:11:14
【问题描述】:
如果源数据有新列,我正在尝试在 Hive 表中添加一列。新列的所有检测工作正常,但是,当我尝试将列添加到目标表时,我收到此错误:
for (f <- df.schema.fields) {
if ("[" + f.name + "]"==chk) {
spark.sqlContext.sql("alter table dbo_nwd_orders add columns (" + f.name + " " + f.dataType.typeName.replace("integer", "int") + ")")
}
}
错误:
WARN HiveExternalCatalog: Could not alter schema of table `default`.`dbo_nwd_orders` in a Hive compatible way. Updating Hive metastore in Spark SQL specific format
InvalidOperationException(message:partition keys can not be changed.)
但是,如果我捕获生成的更改语句并从 hive GUI (HUE) 执行它,我可以毫无问题地添加它。
alter table dbo_nwd_orders add columns (newCol int)
为什么这句话在 GUI 中有效,而不是在 spark 代码中有效?
非常感谢。
【问题讨论】:
标签: scala apache-spark hive