importtsv是从tsv文件直接加载内容到HBase的一个HBase内置工具,通过运行MR Job,将数据从TSV文件直接写入HBase的表或写入一个HBase的自由格式数据文件(HFile)。
使用awk工具对原始文件作处理,添加rowkey字段。将第一个字段和第二个字段拼接作为rowkey。
命令:
awk -F ',' '{print $1"_"$2","$0}' /home/tab1.txt > /home/tab2.txt
awk工具使用,可参考https://www.cnblogs.com/lzeffort/p/7242762.html;
https://www.cnblogs.com/chengmo/archive/2010/10/08/1845913.html
然后,将tab2.txt文件上传到hdfs上;在HBase中创建tab2表,create table 'tab2','cf1'。
直接导入数据到hbase表中:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator="," \ #(不指定,默认是\t分割)
-Dimportttsv.columns=HBASE_ROW_KEY,cf1:name,cf1:gender \
tab2 \ #表名
/lcl/tab2.txt #hdfs路径
还有一种方式是先生成HFile文件:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator="," \
-Dimporttsv.bulk.output=/lcl/output \ #hdfs路径,可以事先不存在
-Dimporttsv.columns=HBASE_ROW_KEY,cf1:name,cf1:gender \
tab2 \
/lcl/tab2.txt
然后,完成bulk加载到表tab2中:(completebulkload)
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
/lcl/output \
tab2
最后登陆hbase shell 查看,scan 'tab2'。