初识Hbase-使用批量导入将.TSV文件中数据导入到Hbase表中

Hbase中数据的批量导入->TSV格式文件的数据导入到hbase表中

importTSV工具

作用

1.hbase内部提供了将.TSV文件中数据导入到hbase表的jar包
2.tsv文件格式以制表符(tab键)分隔的数据

测试HADOOP_CLASSPATH中是否包含使用到hbasejar包

    进入hadoop目录,运行bin/yarn jar /opt/ch5.7.6/moudlesase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar 此jar包中提供了importtsv方法
    1.如果没有声明hadoop的环境变量会报错,类没有找到-ClassNotFound....;
    2.解决办法:进入hbase目录bin/hbase mapredcp将所有的jar包export到HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/所有jar
    -->export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/跟hbase目录bin/hbase mapredcp中所有以.jar结尾的文件

jar包中importtsv方法的用法

    1.importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
    参数:columns=a,b,c:导入表中的数据和表中的哪个字段对应
        tablename:表名
        inputdir:要导入的文件路径(hdfs上的文件路径,因为现在执行的是mapreduce程序默认会从hdfs上读取文件)
        **1.用法一:直接将数据文件中的内容导入到hbase中**
            1.将要导入的.tsv文件(注意一条数据一行,多个字段之间使用制表符分隔)上传到hdfs上;
            2.进入hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex student:stu_info /import_data/importData.tsv
            3.帮助文档:
            进入hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar importtsv
        **2.用法二:工作中常用的方法,不用直接操作表,不会产生并发对表的写入,不会影响业务**
            1.将数据文件转换成HFILE文件
            Hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex student:stu_info -Dimporttsv.bulk.output=/import_data/output(转换后HFILE文件在hdfs上存放路径,此文件不能提前存在) stu_info(上面的表相对应) /import_data/input2(要转换的hdfs上的.tsv文件)
            2.将生成的HFILE文件导入到hbase表中
            Hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar  completebulkload /import_data/output(1.中指定的HFILE在hdfs上的输出目录) student:stu_info(要将数据导入的表,此处需要注意stu_info表中的列族要和1.中的info:name中的info相同,即stu_info表中的列族是info)
        **3.两种方法的区别**
            1.使用方法一如果数据要导入的数据量比较大的时候,这张表会持续的进行读写操作,如果这张表还对外提供业务访问,此时进行批量的向表中写入数据会造成业务阻塞,直接影响业务;
            2.使用方法二,在将数据文件转换成HFILE文件时并没有对表进行操作,并不会影响外部业务对该表的访问;将生成的HFILE文件导入到hbase表中实际就是一个移动文件的过程,将转换后的HFILE移动到hbase表目录下。
            3.方法二的缺点:正常我们使用put向hbase表写入数据的时候,数据首先会被写入到memstore(内存)中,如果直接使用completebulkload则内存中没有要写入的数据;此时不能进行快速查询(快速查询会从memstore中查找数据),在第一次查找数据时就必须访问storefile,去storefile中去查找。
            4.导入不同格式的文件(即数据间分隔符不同的文件)
                1.以制表符分隔的文件为.tsv文件
                2.以","(英文逗号)分隔的文件为.csv文件
                3.在导入数据指定文件分隔符
                    '-Dimporttsv.separator=指定的分隔符'
                    demo:
                    '-Dimporttsv.separator=,'->以英文逗号分隔
    2.查看jar包中方法文档
        1.查看jar中所有方法:hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar 
        2.查看jar中具体方法的用法:hadoop目录:bin/yarn jar /opt/cdh5.7.6/moudles/hbase-1.2.0-cdh5.7.6/lib/hbase-server-1.2.0-cdh5.7.6.jar importtsv
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值