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

use*_*851 4 ddl hadoop hive

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

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

ALTER TABLE testdb.temptable RENAME TO testdb.newtable;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

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

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

Sam*_*ter 14

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

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

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

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


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