我正在处理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
我如何解决此问题。在此先感谢您的帮助!
答案 0 :(得分:11)
这不是一个错误,只是开源的一个副作用,当它由全世界各地的人们完成时没有“产品所有者”并且没有使用共同编程风格的激励(或进行广泛的回归测试) ,或<在此处插入您的投诉> )。
Aaaaaa,现在据说,我感觉好多了......让我们谈谈。
在HiveQL中,alter
命令不使用与create
或select
相同的语义;具体来说,您不能使用“ALTER DATABASE.TABLE”表示法。如果您尝试,那么HQL解析器就会失败并显示一条奇怪的错误消息,您可以自己看到。
就是这样。您必须首先键入use
命令,然后键入仅使用表名的alter
命令。是的,很糟糕。但就是这样。我认为没有理由为什么它应该很快改善。
答案 1 :(得分:2)
我有类似的错误消息,在使用替代语法后,通过短名称选择模式和引用表:
USE mydb;
ALTER TABLE mytable RECOVER PARTITIONS;