无法使用主键创建配置单元表 [英] unable to create hive table with primary key
问题描述
我无法使用主键在蜂巢中创建外部表.以下是示例代码:
I am unable to create an external table in hive with primary key. Following is the example code:
hive> create table exmp((name string),primary key(name));
这将向我返回以下错误消息:
This returns me the following error message:
NoViableAltException(278 @ [])在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:11216)在 org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:35977) 在org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:31169) 在org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeList(HiveParser.java:29373) 在org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:4439) 在org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2084) 在org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1344) 在org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:983) 在org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:190) 在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:434) 在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:352) 在org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:995) 在org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1038) 在org.apache.hadoop.hive.ql.Driver.run(Driver.java:931) 在org.apache.hadoop.hive.ql.Driver.run(Driver.java:921) 在org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268) 在org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220) 在org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:422) 在org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:790) 在org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684) 在org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:483) 在org.apache.hadoop.util.RunJar.main(RunJar.java:212)失败:ParseException行1:18无法识别'(''name' 列规范中的字符串"
NoViableAltException(278@[]) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:11216) at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:35977) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:31169) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeList(HiveParser.java:29373) at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:4439) at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2084) at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1344) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:983) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:190) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:434) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:352) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:995) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1038) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:921) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:422) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:790) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623) 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:483) at org.apache.hadoop.util.RunJar.main(RunJar.java:212) FAILED: ParseException line 1:18 cannot recognize input near '(' 'name' 'string' in column specification
请帮帮我.
推荐答案
较旧版本的配置单元不支持主键,但此支持已在2.1.0版本的配置单元中添加.所以这是示例查询
Older version of the hive doesn't support primary key but this support has been added in 2.1.0 version of hive. So here is the sample query for it
CREATE TABLE table_name (
id int,
name string,
dept string,
primary key(id) disable novalidate
);
CREATE TABLE table_name (
id int,
name string,
dept string,
primary key(id) disable novalidate
);
PS:如何获取Hive版本
PS: How to get the version of hive
hive --version
Hive 1.2.1000.x.x.x.xxxx-x
hive --version
Hive 1.2.1000.x.x.x.xxxx-x
或进入直线并击中
beeline
Beeline version 1.2.1000.x.x.x.xxxx-x by Apache Hive
beeline
Beeline version 1.2.1000.x.x.x.xxxx-x by Apache Hive
这篇关于无法使用主键创建配置单元表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!