Sqoop2 Hbase导入:无法为行键列插入具有空值的行

时间:2017-04-26 13:06:45

标签: hadoop mapreduce hbase sqoop

我正在尝试使用sqoop job将数据从oracle迁移到Hbase。看起来它已成功导出但在Hbase中导入相同内容时会抛出错误。

作业1:

​ `​sqoop import --verbose --connect *** --username *** --password *** --table 'abc' --columns "MID,EID,RTIMESTAMP,VALUE,UTIMESTAMP" --split-by 'abc.ID' --hbase-table "HPVSQOOP" --column-family "cf1" --hbase-row-key MID,EID,RTIMESTAMP --num-mappers 4 --hbase-bulkload​

其中ID是Oracle中的主键,但我希望我的HBase行键为MID_EID_RTIMESTAMP

通过抛出错误导致Map-Reduced失败:

  

INFO mapreduce.Job:任务ID:attempt_1492489711789_0014_m_000003_2,   状态:FAILED错误:java.io.IOException:无法插入行   行键列的空值:MID,EID,RTIMESTAMP at   org.apache.sqoop.hbase.ToStringPutTransformer.getPutCommand(ToStringPutTransformer.java:146)   在   org.apache.sqoop.mapreduce.HBaseBulkImportMapper.map(HBaseBulkImportMapper.java:83)

使用--query的另一个Job不能使用Hbase导入。 JOB2:

​sqoop import --verbose --connect *** --username *** --password **' --query "select MID,EID,VALUE,RTIMESTAMP,UTIMESTAMP,ID from database.abc where \$CONDITIONS" --split-by 'abc.ID' --hbase-table "HPVSQOOP" --column-family "cf1" --hbase-row-key "MID,EID,RTIMESTAMP" --num-mappers 4 --hbase-bulkload

最终抛出错误:

  

错误sqoop.Sqoop:运行Sqoop时遇到异常:   java.lang.NullPointerException java.lang.NullPointerException

1 个答案:

答案 0 :(得分:0)

如果数据库中的列名小写,则应在命令行中使用小写名称,如--hbase-row-key "mid,eid..."