启动HBase Shell,运行
hbase shell
如果启动hbase shell的前提条件是打开基于高可用平台下的,所以要打开所有可以打开的东西。比如zookeeper namenode,之类的。
1.一般操作
1)查询服务器状态
Status
(2)查询Hbase版本
Version
(3)查看所有表
List
2.增删改
(1)创建一个表
create’member001’,’member_id’,’address’,’info’
(2)获得表的描述
describe 'member001'
(3)添加一个列族
alter 'member001', 'id'
(4)添加数据
在HBase shell中,我们可以通过put命令来插入数据。列簇下的列不需要提前创建,在需要时通过:来指定即可。添加数据如下:
put 'member001', 'debugo','id','11'
put 'member001', 'debugo','info:age','27'
put 'member001', 'debugo','info:birthday','1991-04-04'
put 'member001', 'debugo','info:industry', 'it'
put 'member001', 'debugo','address:city','Shanghai'
put 'member001', 'debugo','address:country','China'
put 'member001', 'Sariel', 'id', '21'
put 'member001', 'Sariel','info:age', '26'
put 'member001', 'Sariel','info:birthday', '1992-05-09'
put 'member001', 'Sariel','info:industry', 'it'
put 'member001', 'Sariel','address:city', 'Beijing'
put 'member001', 'Sariel','address:country', 'China'
put 'member001', 'Elvis', 'id', '22'
put 'member001', 'Elvis','info:age', '26'
put 'member001', 'Elvis','info:birthday', '1992-09-14'
put 'member001', 'Elvis','info:industry', 'it'
put 'member001', 'Elvis','address:city', 'Beijing'
put 'member001', 'Elvis','address:country', 'china'
(5)查看表数据
scan 'member001'
(6)删除一个列族
alter 'member001', {NAME => 'member_id', METHOD => 'delete’}
(7)删除列
a)通过delete命令,我们可以删除id为某个值的‘info:age’字段,接下来的get就无值了:
delete 'member001','debugo','info:age'
get 'member001','debugo','info:age'
b)删除整行的值,用deleteall命令:
deleteall 'member001','debugo'
get 'member001','debugo'
(8)通过enable和disable来启用/禁用这个表,相应的可以通过is_enabled和is_disabled来检查表是否被禁用
is_enabled 'member001'
is_disabled 'member001'
(9)使用exists来检查表是否存在
exists 'member001'
(10)删除表需要先将表disable。
disable 'member001'
drop 'member001'
3、查询
(1)查询表中有多少行,用count命令:
count 'member001’
(2)get
a)获取一个id的所有数据:
get 'member001', 'Sariel'
b)获得一个id,一个列簇(一个列)中的所有数据:
get 'member001', 'Sariel', 'info'
(3)查询整表数据
scan 'member001'
(4)扫描整个列簇
scan 'member001', {COLUMN=>'info'}
(5)指定扫描其中的某个列
scan ‘member001’,{COLUMNS=> ‘info:birthday’}
(6)除了列(COLUMNS)修饰词外,HBase还支持Limit(限制查询结果行数),STARTROW(ROWKEY起始行。会先根据这个key定位到region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和FILTER(按条件过滤行)等。比如我们从Sariel这个rowkey开始,找下一个行的最新版本:
scan 'member001', { STARTROW => 'Sariel', LIMIT=>1, VERSIONS=>1}
(7)Filter是一个非常强大的修饰词,可以设定一系列条件来进行过滤。比如我们要限制某个列的值等于26。
scan 'member001', FILTER=>"ValueFilter(=,'binary:26')"
值包含6这个值:
scan 'member001', FILTER=>"ValueFilter(=,'substring:6')"
列名中的前缀为birth的:
scan 'member001', FILTER=>"ColumnPrefixFilter('birth') "
FILTER中支持多个过滤条件通过括号、AND和OR的条件组合:
scan 'member001', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1988')"
PrefixFilter是对Rowkey的前缀进行判断,这是一个非常常用的功能。
scan 'member001', FILTER=>"PrefixFilter('E')"