期待在alter exchange partition中'table'附近的KW_EXCHANGE

时间:2016-02-04 19:59:53

标签: hadoop hive ddl

我正在处理hive中的一个表,该表没有分区,输入格式为textinputformat。这不是外部表,我使用“Create table as select”模板创建它。

我使用alter 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

我发现它是蜂巢中的一个错误。我使用的版本: Hive 0.12.0-cdh5.1.4

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

2 个答案:

答案 0 :(得分:11)

这不是一个错误,只是开源的一个副作用,当它由全世界各地的人们完成时没有“产品所有者”并且没有使用共同编程风格的激励(或进行广泛的回归测试) ,或<在此处插入您的投诉> )。

Aaaaaa,现在据说,我感觉好多了......让我们谈谈。

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

就是这样。您必须首先键入use命令,然后键入仅使用表名的alter命令。是的,很糟糕。但就是这样。我认为没有理由为什么它应该很快改善。


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

答案 1 :(得分:2)

我有类似的错误消息,在使用替代语法后,通过短名称选择模式和引用表: USE mydb; ALTER TABLE mytable RECOVER PARTITIONS;