【问题标题】:Error when creating a table with Sqoop使用 Sqoop 创建表时出错
【发布时间】: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)     

提前感谢您的帮助。

【问题讨论】:

    标签: oracle hive sqoop


    【解决方案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 上已有的数据。 这样做的目的是让 Hive 猜测并自动创建元数据。我为了能够在通用脚本中执行整个过程。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 1970-01-01
        相关资源
        最近更新 更多