无法使用主键创建配置单元表 [英] unable to create hive table with primary key

查看:100
本文介绍了无法使用主键创建配置单元表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使用主键在蜂巢中创建外部表.以下是示例代码:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆