文章目录
一、HBase的基本shell操作
# 1、进入HBase的操作命令的控制台
hbase(main):001:0> hbase shell
# 2、查看帮助文档
hbase(main):001:0> help
# 3、查看具体命令如何使用
hbase(main):001:0> help '命令'
#3、创建表create
# create '表名', '列族1','列族2'......
hbase(main):001:0> create 'test01','f1','f2'
# 4、查看HBase有哪些所有表
hbase(main):001:0> list
# 5、表添加数据put
# put '表名', 'rowkey值','列族:列名','列值'
hbase(main):001:0> put 'test01','rk0001','f1:name','zhangsan'
hbase(main):001:0> put 'test01','rk0001','f1:age',23
hbase(main):001:0> put 'test01','rk0001','f2:address','上海'
# 6、按行键(rowkey)查询数据(一下中括弧‘[]’表示中间内容为可选条件)
get '表名','rowkey值'[,'列族1','列族2'... || '列族1:列名1','列族2:列名2'... || '列族1','列族1:列名1'... ]
hbase(main):001:0> get 'test01','rk0001','f1','f2:address'
# 7、修改表数据:修改就是新增使用put
hbase(main):001:0> put 'test01','rk0001','f1:name','beijin'
# 8、delete(只能删除某行的某列数据,默认只删除最新的版本)
# delete '表名','rowkey','列族:列名'
hbase(main):001:0> delete 'test01','rk0001','f1:name'
# 9、deleteAll(支持删除整行数据,直接将所有的版本全部都删除)
# deleteall '表名','rowkey' [,'列族:列名']
# deleteall '表名','rowkey'
hbase(main):001:0> deleteall 'test01','rk0001'
hbase(main):001:0> delete 'test01','rk0001','f1:name'
# 10、describe(desc)查看表结构
# describe '表名'/ desc '表名'
hbase(main):001:0> describe 'test01'
hbase(main):001:0> desc 'test01'
# 11、truncate 清空表
# truncate '表名'
hbase(main):001:0> truncate 'test01'
# 12、drop 删除表(表必须是禁用状态才可以删除)
# drop '表名'
hbase(main):001:0> drop 'test01'
# 13、disable 禁用表
# disable '表名'
hbase(main):001:0> disable 'test01'
# 14、enable 启用表
# enable '表名'
hbase(main):001:0> enable 'test01'
# 15、scan 查询多条数据
# scan '表名'[,{COLUMNS=>['列族1','列族2'] || COLUMNS=>['列族1','列族2:列名'] || COLUMNS=>['列族1:列名','列族2:列名'], FORMATTER=>'toString', LIMIT=>N,STARTROW=>'起始rowkey', ENDROW=>'结束rowkey']
# STARTROW=>'起始rowkey', ENDROW=>'结束rowkey' ,左闭右开
# FORMATTER=>'toString' 用于显示中文
# LIMIT=>N : 显示前N行数据
hbase(main):001:0> scan 'test01'
# 16、count 查看表共计多少条数据
hbase(main):001:0> count 'test01'
二、HBase的高级shell操作
2.1 过滤查询
格式:
scan '表名',{FILTER=>"过滤器的名字(比较运算符,比较器表达式)"}
常见的过滤器:
rowkey相关的过滤器:
RowFilter: 实现行键字符串的比较和过滤操作
PrefixFilter: rowkey的前缀过滤器
列族过滤器:
FamilyFilter: 列族过滤器
列名过滤器:
QualifierFilter: 列名过滤器
列值过滤器:
ValueFilter: 列值过滤器, 找到符合对应列的数据值
SingleColumnValueFilter: 在指定的列族和列名中进行比较具体的值, 将符合的数据全部都返回(包含条件的内容字段)
SingleColumnValueExcludeFilter: 在指定的列族和列名中进行比较具体的值, 将符合的数据全部都返回(不包含条件的内容字段)
比较运算符: > < >= <= !=
比较器:
比较器 比较器表达式
BinaryComparator binary:值 完整匹配字节数据
BinaryPrefixComparator binaryprefix: 值 匹配字节数据的前缀
NullComparator null 匹配null值
SubstringComparator substring:值 模糊匹配操作
查询rowkey中以 rk 开头的数据
代码如下(示例):
scan 'test01',{FILTER=>"PrefixFilter('rk')"}
查询在列名中包含 a字段的列有哪些?
scan 'test01',{FILTER=>"QualifierFilter(=,'substring:a')"}
查询在f1列族下 name列中 包含 z 展示出来
# 包含条件的结果
scan 'test01',{FILTER=>"SingleColumnValueFilter('f1','name',=,'substring:z')"}
# 不包含条件的结果
scan 'test01',{FILTER=>"SingleColumnValueExcludeFilter('f1','name',=,'substring:z')"}
2.2 whoami: 显示HBase当前登录使用用户
hbase(main):001:0> whoami
2.3 exists: 判断表是否存在
exists 'test01'
2.4 alter 修改表结构信息
添加列族:
alter ‘表名’ , NAME =>‘新列族’[,VERSION=>N]
删除列族:
alter ‘表名’,‘delete’ =>‘旧列族’
总结
hbase的shell命令,相对而言就scan的过滤查询比较难,其他的都是简单的语句,有许多的过滤器的使用方法可以到官方api查询使用方法。
API 文档: https://hbase.apache.org/2.1/apidocs/index.html