【发布时间】:2011-05-12 12:34:35
【问题描述】:
我想使用“sqoop create-hive-table”在 Hive 中创建一个表模式。我的数据库是 Oracle Database 10g Enterprise Edition 10.2.0.4.0,我使用 sqoop-1.2.0-cdh3u0 和 hive-0.7.0-cdh3u0。之后要在 Hive 表上加载的数据已经在 HDFS 上,我宁愿让 sqoop 和 hive 自动创建表元数据,而不是手动创建它并在之后加载数据。
这是我执行的命令:
$ sqoop create-hive-table --connect jdbc:oracle:thin:@//dbserver:1521/masterdb
--username myuser --table DBFUNC1.R1_EVOLUTION
--fields-terminated-by ',' -P
我收到以下错误:
11/05/12 11:33:11 信息 hive.HiveImport:加载上传的数据 进入蜂巢
11/05/12 11:33:12 信息 manager.OracleManager:时区有 已设置为 GMT 11/05/12
11:33:12 信息 manager.SqlManager:执行 SQL 语句:SELECT t.* FROM BFUNC1.R1_EVOLUTION t WHERE 1=0
11/05/12 11:33:14 信息 hive.HiveImport:Hive 历史 文件=/tmp/edjatsay/hive_job_log_edjatsay_201105121133_1466429457.txt
11/05/12 11:33:14 信息 hive.HiveImport:失败:解析错误: 第 1:58 行不匹配的输入 ')' 期望列中的标识符 规范
11/05/12 11:33:14 信息 hive.HiveImport:
2012 年 11 月 5 日 11:33:14 错误 tool.CreateHiveTableTool:遇到 IOException 运行创建表作业: java.io.IOException:Hive 退出 状态 11
这是数据库中表的架构:
SQL> describe BFUNC1.R1_EVOLUTION;
OWNER_ID NOT NULL NUMBER(38)
AI_CODE NOT NULL CHAR(3)
TA_NUMBER NOT NULL NUMBER(38)
RULE NOT NULL CHAR(4)
F_CLASS NOT NULL CHAR(8)
EVOLUTION_ID NOT NULL NUMBER(38)
CREATION_MODIFID NUMBER(38)
DISC_MODIFID NUMBER(38)
CREATION_DATETIME CHAR(19)
ENDED_DATETIME CHAR(19)
EVOLUTION_STATE CHAR(1)
提前感谢您的帮助。
【问题讨论】: