【问题标题】:sqoop inserting data into wrong hive column from rdbms tablesqoop 将数据插入 rdbms 表中的错误配置单元列
【发布时间】:2016-02-04 06:41:43
【问题描述】:

我在 SQL Server 中有一个名为“员工”的表:

ID  NAME    ADDRESS   DESIGNATION
1   Jack     XXX       Clerk
2   John     YYY       Engineer

我在 hive 中创建了一个外部表 (emp),并通过 sqoop 导入使用 sqoop 的 --query 参数将数据从员工导入到 hive 表。如果我提到 --query 为 'select * from employee' 则数据将正确插入到配置单元表中。但如果我提到 --query 为来自员工的 'select ID,NAME,DESIGNATION' 则数据在'employee'表的 DESIGNATION 列(rdbms)正在插入到“emp”表的地址列,而不是插入到指定列。当我运行以下配置单元查询时:

select designation from emp;

我得到的值是: 无效的 无效的 而不是:文员 工程师 但是,如果我将 hive 查询运行为:

select address from emp;

我得到的值是: 文员 工程师 而不是 :NULL 无效的 修复此不正确数据的任何想法都会有很大帮助。我目前使用的是 0.11 版本的 hive,所以我不能使用 0.14 版本的 hive 插入查询。

【问题讨论】:

    标签: hadoop hive sqoop


    【解决方案1】:

    好的,我给你看一个样本。

    sqoop import --connect jdbc:mysql://host:port/db'?useUnicode=true&characterEncoding=utf-8' \
    --username 'xxxx' \
    --password 'xxxx' \
    --table employee \
    --columns 'ID,NAME,DESIGNATION' \
    --where 'aaa=bbb' \
    -m 1 \
    --target-dir hdfs://nameservice1/dir \
    --fields-terminated-by '\t' \
    --hive-import \
    --hive-overwrite \
    --hive-drop-import-delims \
    --null-non-string '\\N' \
    --null-string '\\N' \
    --hive-table 'hive_db.hive_tb' \
    --hive-partition-key 'pt' \
    --hive-partition-value '2016-01-20'
    

    有些参数是可选的。

    sqoop 语法细节: http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_literal_sqoop_import_literal

    【讨论】:

      【解决方案2】:

      Sqoop 语句会将数据导入到 hdfs 目录中(假设字段分隔符为 ,)

      1,Jack,Clerk
      2,John,Engineer
      

      所以地址列将有 DESIGNATION 数据,而 DESIGNATION 列将为空

      你可以试试 --query "select ID,NAME,'',DESIGNATION from employee",应该可以的

      【讨论】:

      • 这种方法提供了一个临时解决方案,但我们的要求是我们不应该强迫用户以这种方式编写查询。
      • 对不起,但不了解您的要求,hdfs 外部位置字段将映射到 hive 表结构,因此您必须相应地 sqoop 导入特定列,使用 --query as 'select ID,NAME,DESIGNATION ' 映射到 hive 表列 ID ,NAME ,ADDRESS , DESIGNATION 只会给你 DESIGNATION null,你必须改变 hive 表结构或查询
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2014-07-26
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多