马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一.工具开发背景: 业务上目前主要计算逻辑的数据源是hbase,但是我们没有工具对hbase的数据进行单条更改造数据来验证逻辑,之前的做法是把hbase的数据都导出来,改完再重新载入回去,或使用hbase [url=]shell[/url]接口进行更改(有一个限制就是hbase shell get 出来的数据汉字是看不出来的),效率低,也不便于自动化的回归。[url=]测试[/url]非常的被动。 于是在师姐的建议下期望有操作hbase数据的工具来提高我们的效率,及大数据的验证。
二.工具简介: 工具使用[url=]java[/url]编写的jar包,在ihbase.sh进行简单数据处理对jar包进行调用。主要功能为数据的增删改查,支持gbk,utf8编码。通过配置一个xml格式的配置文件 (也可以不配置)。 三.使用方法: 1.properties.sh:在里面配置hbase,hadoop等环境变量,里面目前默认是我们测试集群的配置作为参考。注意一些基础的jar包一定要有。 2.config:xml格式的配置hbase导出数据的信息。在海量导出数据或根据rowkey到处数据的时候使用。 3.ihbase.sh工具的使用接口。 四.简要使用介绍: 操作均在bin目录下。
一.查询数据功能
1. ./ihbase –t table_name -rowkey rowkey -enc encoding -s
-enc encoding这个的目的是指定以什么编码读出hbase数据,目前支持utf8,gbk。如果不加该参数则默认以utf读出。
查看表名为table_name,rowkey为rowkey的数据。
2. ./ihbase –t 表名 –k CF:COLUMN=value –k CF:COLUMN=value –w column -s
./ihbase.sh –t "[url=]test[/url]" –k "a:name=jkfs" –k "a:id=111" -w "nid" -s
查询满足a:name=jkfs且a:id=111的记录,若加上-w参数,则只显示 -w 传进去的列。若不加-w 显示所有列。
(这个命令一般很少用,因为使用这个=的filer需要扫hbase全表,因为这种方式很少使用,所以暂时没考虑如何优化)
二.删除数据功能
1. ./ihbase –t table_name –rowkey rowkey –delete
根据rowkey进行删除。 2. ./ihbase –t table_name –k CF:COLUMN=value –k CF:COLUMN=value –delete
./ihbase –t test –k "a:id=jaks" -k "name=a:jkasj" -delete
删除满足a:id=jaks且a:name=jkasf的数据(目前支持and进行删除,不支持or,原理同该方式的查询)
三.添加数据功能 ./ihbase –t table_name –rowkey rowkey –v CF:COLUMN=value –v CF:COLUMN=value -a ./ihbase.sh –t "a:test" -rowkey "111" –v "a:name=jkfs" –v "id=111" -a
添加rowkey为111的数据,后面key,value可以任意指定。如果rowkey已经存在,则报错不进行添加。
添加数据要求必须指定rowkey
四.修改数据功能
1. ./ihbase –t table_name –rowkey rowkey –v key=value -v key=value -u
./ihbase.sh -t "test" -rowkey "1111" –v "name=jkasjd" -u
根据rowkey进行修改一条记录的列数据
2. ./ihbase –t table_name –k key=value –k CF:COLUMN=value -v CF:COLUMN=value -u
./ihbase.sh –t test –k "a:name=jksdj" –k "mge=kjdk" –v "a:name=huanyu" -u
根据非rowkey进行修改,-k 提供修改的条件,-u 提供要修改的列的数数据。(原理同查询,scan全表)
五.导出hbase指定列的数据(所有数据) ./ihbase -f config 此处有一个限制:就是导出表的配置文件必须放在bin的目录下。如果不喜欢这样也可以修改ihbase脚本进行调整。 config为配置导出表信息的xml配置 <?xml version="1.0"?>
<configuration>
<table>
<in_enc>gbk</in_enc>
<out_enc>utf8</out_enc>
<tablename>test</tablename>
<field_separator>\001</field_separator>
<record_separator>\002</record_separator>
<column>
bmw_shops:title
</column>
<outpath>/test/huanyu/hbase</outpath>
</table>
</configuration> in_enc:hbase中的编码,以解析hbase中数据使用的编码。 out_enc:输出到hdfs路径上的编码。 tablename:操作的表名。 field_separator:如果导出多个字段则作为多个字段间的分隔符。 record_separator:导出数据的行分隔符。(除了\n的字符,因为默认会分行)。 column:导出的字段。如果不存在该字段则导出''。 outpath:导出数据的路径。(其实应在代码中把这个路径先删除的,但是怕用户忘记修改路径误删除,所以没有这么做) 有多少个region 启动多少个map。
六.导出hbase指定行的指定列的数据 ./ihbase -f config -rf rfile config里面配置导出的列,字符编码表名等信息。 rfile 配置导出哪些rowkey的数据。(一个rowkey一行)
类似上面。
七.帮助信息 ./ihbase –h 显示帮助信息
|