无法使用主键在配置单元中创建外部表。下面是示例代码:
hive> create table exmp((name string),primary key(name));
这将返回以下错误消息:
noviablealException(278@[]),位于org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.identifier(hiveparser\u 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.com)上。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(驱动程序。java:995)在org.apache.hadoop.hive.ql.driver.runinternal(驱动程序。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(方法。java:483)在org.apache.hadoop.util.runjar.main(runjar。java:212)失败:parseexception行1:18无法识别'(''name'附近的输入列规范中的“string”
请帮帮我。
7条答案
按热度按时间9udxz4iz1#
试试这个
zf2sa74q2#
旧版本的配置单元不支持主键,但已在2.1.0版本的配置单元中添加了此支持。下面是它的示例查询
CREATE TABLE table_name ( id int, name string, dept string, primary key(id) disable novalidate );
ps:如何获得hive版本hive --version Hive 1.2.1000.x.x.x.x-x
或者进入直线击球beeline Beeline version 1.2.1000.x.x.x.x-x by Apache Hive
0tdrvxhp3#
配置单元中没有任何主键和外键。因此请删除主键并执行。
创建表exmp(名称字符串);
b09cbbtk4#
首先,配置单元中的derby没有键;其次,某些键可能与配置单元中的关键字重复,因此必须向它们添加单引号。在我的例子中,查询出错
应该是的
emeijp435#
从官方页面:https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl
它们在创建表的语法中包括:
所以这意味着我们可以在配置单元中用主键创建表
版本信息
从hive 2.1.0(hive-13290)开始。
配置单元包括对未验证的主键和外键约束的支持。当存在约束时,一些sql工具会生成更高效的查询。由于这些约束未经验证,因此上游系统需要在加载到配置单元之前确保数据完整性。例子:
lawou6xi6#
配置单元中没有主键概念,因为它不是数据库,并且配置单元中的操作基于文件而不是基于记录。
试试这个
在这里考虑
rowId
并执行操作。628mspwn7#
抱歉,如果您有任何其他与配置单元表相关的功能,则配置单元中没有主键