CREATE TABLE 命令在 Hive 查询语言中不起作用

Posted

技术标签:

【中文标题】CREATE TABLE 命令在 Hive 查询语言中不起作用【英文标题】:CREATE TABLE command is not working in Hive query language 【发布时间】:2015-09-18 04:29:46 【问题描述】:

当我尝试在 hive 中创建表时,收到以下错误消息。知道为什么会这样吗?

hive> create table a (x int);

FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 MetaException(message:对于直接MetaStore DB连接,我们不支持在客户端重试。)

以下是日志:

 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate key name 'TBLS_FK2' at sun.reflect.GeneratedConstructorAccessor25.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorA‌​ccessorImpl.java:45) 

【问题讨论】:

你能提供 hive 日志吗?还有你使用的是 derby 还是 mysql 的 metastore? 感谢您的回复。我正在使用 mysql 元存储。在 /tmp/username 下创建的扩展名为 .pipeout 的日志文件为空。有没有办法启用日志记录 以下是日志快照:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:sun.reflect.GeneratedConstructorAccessor25.newInstance(Unknown Source) at sun.reflect 中的键名“TBLS_FK2”重复。 DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 您可以尝试停止配置单元服务器并登录到 mysql 并删除元存储并重新启动服务器。我认为可能有一些旧的元存储在 mysql 中没有正确升级或元存储表没有正确创建 此链接可能对您有所帮助qnalist.com/questions/5919571/… 【参考方案1】:

这可能对你有用。

必须使用 SCHEMA TOOL 初始化架构

命令:$HIVE_HOME/bin/schematool -dbType mysql -initSchema

注意:如果您使用 mysql 作为 rdbms,则 -dbType 是 mysql。

请参考以下链接:https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool

【讨论】:

以上是关于CREATE TABLE 命令在 Hive 查询语言中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 create-hive-table 在 Hive 中创建表时如何使用自定义分隔符

CREATE Hive TABLE (AS SELECT) 需要 Hive 支持

使用 --create-hive-table 直接在 hive 中导入 mysql 表 (sqoop)

HIVE常用命令之ANALYZE TABLE命令简述

Hive - Create Table&Drop Table & ALTER Table(上)

Hive - Create Table&Drop Table & ALTER Table(中)