期待 KW_EXCHANGE 接近 'table' 改变交换分区

expecting KW_EXCHANGE near 'table' in alter exchange partition

我正在处理配置单元中的 table,它没有分区,输入格式为 textinputformat。这不是外部 table,我使用 "Create table as select" 模板创建它。

我使用 alter table 语句重命名 table,如下所示:

ALTER TABLE testdb.temptable RENAME TO testdb.newtable;

我收到以下错误:

Error: Error while compiling statement: FAILED: ParseException line 1:32 mismatched input 'RENAME' expecting KW_EXCHANGE near 'temptable' in alter exchange partition (state=42000,code=40000)
Closing: org.apache.hive.jdbc.HiveConnection

我看到这是配置单元中的一个错误。我使用的版本: 配置单元 0.12.0-cdh5.1.4

我该如何解决这个问题。在此先感谢您的帮助!

这不完全是一个错误,只是开放源代码的副作用,它是由世界各地一群形形色色的人完成的,没有 "product owner" 也没有使用通用编程风格(或 运行 广泛的回归测试,或 <在此处插入您的投诉>)。

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊……说正题啊

在 HiveQL 中,alter 命令不使用与 createselect 相同的语义;具体来说,您不能使用 "ALTER DATABASE.TABLE" 表示法。如果您尝试,HQL 解析器就会失败并显示一条奇怪的错误消息,正如您自己所见。

就是这样。您必须先输入 use 命令,然后输入 alter 命令,仅输入 table 名称。是的,这很糟糕。但事情就是这样。而且我看不出为什么它会很快改善。


[2017 年 6 月更新] 看起来 ALTER 终于支持 DB.TABLE 语法了最近的 Cloudera 发行版(在带有 Hive 1.1.0 的 CDH 5.10 上测试过 - 但由于它们通常在其发行版中包含许多向后端口,也许这是 Hive 1.2+ 的功能)

我有类似的错误消息,它在使用替代语法、选择架构并通过短名称引用 table 后消失了: USE mydb; ALTER TABLE mytable RECOVER PARTITIONS;