使用Sqoop创建表时出错

时间:2011-05-12 12:34:35

标签: oracle hive sqoop

我想使用“sqoop create-hive-table”在Hive中创建表模式。我的数据库是Oracle数据库10g企业版10.2.0.4.0,我使用sqoop-1.2.0-cdh3u0和hive-0.7.0-cdh3u0。之后在Hive表上加载的数据已经在HDFS上,我希望sqoop& amp; 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 INFO   hive.HiveImport:加载上传的数据   进入Hive

     

11/05/12 11:33:12 INFO   manager.OracleManager:时区有   已设定为GMT 11/05/12

     

11:33:12 INFO   manager.SqlManager:执行SQL   声明:SELECT t。* FROM   BFUNC1.R1_EVOLUTION t WHERE 1 = 0

     

11/05/12 11:33:14 INFO   hive.HiveImport:Hive历史   FILE = / TMP / edjatsay / hive_job_log_edjatsay_201105121133_1466429457.txt

     

11/05/12 11:33:14 INFO   hive.HiveImport:FAILED:解析错误:   第1:58行不匹配输入')'   期待列中的标识符   说明书

     

11/05/12 11:33:14   INFO hive.HiveImport:

     

11/05/12   11:33:14错误   tool.CreateHiveTableTool:遇到了   运行create table job的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)     

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我终于通过使用“--hive-import”选项导入带有sqoop的表格的单行来解决此问题。 这是我使用的命令:

$ sqoop import --connect jdbc:oracle:thin:@//dbserver:1521/masterdb --username myuser --table DBFUNC1.R1_EVOLUTION --where 'rownum=1' --verbose -P

接下来,我只删除先前导入的单行并手动加载我在HDFS上已有的数据。 这样做的目的是让Hive猜测并自动创建元数据。我命令能够在通用脚本中执行整个过程。

答案 1 :(得分:0)

以下是我在项目中使用的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