将数据从sqoop导入到配置单元

时间:2016-10-24 16:35:31

标签: hive sqoop

sqoop import –connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \
    –username=retail_dba –password=cloudera –table export1 –hive-import \
    –hive-table export_3 –create-hive-table –fields-terminated-by “|” \
    –lines-terminated-by “\n” –null-string nvl –null-non-string -2 –outdir java_files

如果我使用上述命令,则会出现错误

  

使用split by或-m 1进行顺序导入

当我使用split-by时,它忽略了null值并将其他值导入到配置单元

你能解释一下原因吗?

由于 VARUN

1 个答案:

答案 0 :(得分:0)

您获得的NULL值问题与拆分无关。

默认情况下,Sqoop会将NULL值导入为字符串null。然而,Hive使用字符串\ N来表示NULL值,因此谓词处理NULL(如IS NULL)将无法正常工作。你应该在导入作业的情况下附加参数--null-string和--null-non-string,或者如果你希望在导出作业的情况下附加--input-null-non-string正确保留NULL值。因为sqoop在生成的代码中使用这些参数,所以需要正确地将值\ N转义为\ N:

$ sqoop import  ... --null-string '\\N' --null-non-string '\\N'