环境
hadoop: hadoop-2.7.3
hbase:hbase-0.98.6-hadoop2
1、importtsv简介
是Hbaset提供的一种工具,可以将HDFS上存储的文件,按照一定的分隔符,将数据直接加载到Hbase的表中,有两种方式一个是,将数据直接 加载进Hbase的表中,一种是先将文件转换成Hfile格式,再通过completebulkload将数据放到对应的表的位置上去。
2、importtsv的使用
1、先将准备好的数据上传到hdfs上,
2、在hbase上创建对应的表
3、执行导入
bin/yarn jar /opt/module/apache/hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar importtsv -Dimporttsv.columns=HBase_ROW_KEY,info:name,info:age,info:sex stu_info /HBase-test.tsv
直接按制表符的格式进行加载
importbulkload方式,分两步进行
1、照样先把清洗好的数据,上传到hdfs的目录下 我的事 Hfile/test1
2开始导入
bin/yarn jar /opt/module/apache/hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar importtsv -Dimporttsv.separator=, -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:leader,info.empid,info:hirdate,info:sarlary,info:bouns,info:pid -Dimporttsv.bulk.output=/load_Hfile emp_info /hbase_input/test1
-Dimporttsv.separator 为你要加载文件的分隔符
-Dimporttsv.bulk.output 输出的Hfile的目录
emp_info 表名,这里未指定namespace 就在default下
/hbase_input/test1 存放要加载的文件的目录
3、数据转移 completebulkload
bin/yarn jar /opt/module/apache/hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar completebulkload /load_Hfile emp_info
/load_Hfile 第一步导出的目录
emp_info 第一步建立的表
第一种方式适合,数据量不大的导入,如果数据量过大,容易造成数据丢失,第二种就是可以进行大数据量的文件加载,而且第二部是在HDFS层面的文件移动,对regionserver的压力,也比较小