我使用importtsv在hbase中导入数据。
在我的tsv文件中,有些字段是空的。如何才能不在hbase中导入它们?
例如,我在hbase中有一个名为test的表。我的tsv文件test.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上创建一条记录。我怎样才能避免呢?
2条答案
按热度按时间5jvtdoz21#
add-dimporttsv.skip.empty.columns=真
ffscu2ro2#
我认为您需要编写一个自定义mapreduce作业:https://github.com/jrkinley/hbase-bulk-import-example/blob/master/src/main/java/com/cloudera/examples/hbase/bulkimport/hbasekvmapper.java