Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 如何更改配置单元中的列名_Hive - Fatal编程技术网

Hive 如何更改配置单元中的列名

Hive 如何更改配置单元中的列名,hive,Hive,我有一个配置单元表,其中列的名称为orderbook.time,orderbook.price,等等。我希望从列名中删除前缀orderbook,而不更改表中的任何其他内容。我正在使用以下命令 alter table orderbook change orderbook.time time; 但它给了我以下错误信息 NoViableAltException(17@[]) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersPa

我有一个配置单元表,其中列的名称为
orderbook.time
orderbook.price
,等等。我希望从列名中删除前缀
orderbook
,而不更改表中的任何其他内容。我正在使用以下命令

alter table orderbook change orderbook.time time;
但它给了我以下错误信息

NoViableAltException(17@[])
    at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:11568)
    at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45214)
    at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatementSuffixRenameCol(HiveParser.java:10258)
    at org.apache.hadoop.hive.ql.parse.HiveParser.alterTblPartitionStatementSuffix(HiveParser.java:8533)
    at org.apache.hadoop.hive.ql.parse.HiveParser.alterTableStatementSuffix(HiveParser.java:8148)
    at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7192)
    at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2604)
    at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1591)
    at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1067)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:205)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:170)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:524)
    at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1358)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1475)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1287)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1277)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:226)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:175)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:389)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:781)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:634)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:226)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:141)
FAILED: ParseException line 1:38 cannot recognize input near '.' 'time' 'time' in rename column name

我尝试将旧列名(例如orderbook.time)放入quatation,但收到了相同的错误消息。如何更改列名?

您缺少
时间列的数据类型,然后尝试用`(倒勾)的句点转义列名。

尝试以下查询:

alter table orderbook change `orderbook.time` time <data_type>;
alter table <db_name>.<table_name> change `<col_name>` `<new_col_name>` <data_type>;