我使用importtsv在Hbase中导入数据。
在我的tsv文件中,某些字段为空。如何在Hbase中导入它们呢?
例如,我在Hbase中有一个名为Test的表。我的名为test.tsv的tsv文件看起来像:
1 a b c d
2 q f s
当我这样做时:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,I:c1,I:c2,I:c3,I:c4 Test test.tsv
我有这些结果:
1 column=I:c1, timestamp=1400855636910, value=a
1 column=I:c2, timestamp=1400855636910, value=b
1 column=I:c3, timestamp=1400855636910, value=c
1 column=I:c4, timestamp=1400855636910, value=d
2 column=I:c1, timestamp=1400855636910, value=q
2 column=I:c2, timestamp=1400855636910, value=
2 column=I:c3, timestamp=1400855636910, value=f
2 column=I:c4, timestamp=1400855636910, value=s
即使第二个字段在我的tsv文件的第2行中为空,也会在Hbase上创建一条记录。 我怎么能避免这种情况?
答案 0 :(得分:0)
我认为您需要编写自定义MapReduce作业:https://github.com/jrkinley/hbase-bulk-import-example/blob/master/src/main/java/com/cloudera/examples/hbase/bulkimport/HBaseKVMapper.java
答案 1 :(得分:0)
add -Dimporttsv.skip.empty.columns = true