Oracle 使用Sqoop创建表时出错

Oracle 使用Sqoop创建表时出错,oracle,hive,sqoop,Oracle,Hive,Sqoop,我想使用“sqoop创建配置单元表”在配置单元中创建一个表架构。我的数据库是Oracle Database 10g Enterprise Edition 10.2.0.4.0,我使用sqoop-1.2.0-cdh3u0和hive-0.7.0-cdh3u0。稍后要加载到配置单元表上的数据已经在HDFS上,我更希望由sqoop&Hive自动创建表元数据,而不是手动创建并随后加载数据 以下是我执行的命令: $ sqoop create-hive-table --connect jdbc:oracle:

我想使用“sqoop创建配置单元表”在配置单元中创建一个表架构。我的数据库是Oracle Database 10g Enterprise Edition 10.2.0.4.0,我使用sqoop-1.2.0-cdh3u0和hive-0.7.0-cdh3u0。稍后要加载到配置单元表上的数据已经在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:时区已更改 已设置为格林尼治时间2012年5月11日

11:33:12信息 manager.SqlManager:正在执行SQL 语句:从中选择t.* BFUNC1.R1\u其中1=0

11/05/12 11:33:14信息 蜂巢。蜂巢导入:蜂巢历史记录 文件=/tmp/edjatsay/hive_job_log_edjatsay_201105121133_14664294457.txt

11/05/12 11:33:14信息 hive.HiveImport:失败:分析错误: 第1行:58输入不匹配“')” 列中应为标识符 规格

11/05/12 11:33:14 信息hive.HiveImport:

2012年5月11日 11:33:14错误 tool.CreateHiveTableTool:遇到 IOException正在运行创建表作业: java.io.IOException:配置单元已退出 状况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)     

提前感谢您的帮助。

我最终解决了这个问题,使用带有“-hive import”选项的sqoop导入了我表格的一行。 这是我使用的命令:

$ sqoop import --connect jdbc:oracle:thin:@//dbserver:1521/masterdb --username myuser --table DBFUNC1.R1_EVOLUTION --where 'rownum=1' --verbose -P
接下来,我简单地删除了以前导入的单行,并手动加载了我在HDFS上已有的数据。
这样做的目的是让配置单元猜测并自动创建元数据。我希望能够在通用脚本中执行整个过程

下面是我在项目中使用的sqoop导入查询:

oracle_connection.txt将提供连接信息

sqoop --options-file  oracle_connection.txt \
--table $DATABASE.$TABLENAME \
-m $NUMMAPPERS  \
--where "$CONDITION" \
--hive-import \
--map-column-hive "$COLLIST" \
--create-hive-table \
--hive-drop-import-delims \
--split-by $SPLITBYCOLUMN  \
--hive-table $HIVEDATABASE.$TABLENAME \
--bindir sqoop_hive_rxhome/bindir/ \
--outdir sqoop_hive_rxhome/outdir