一、general类
1、查看集群的状态
status
2、查看数据库版本
version
3、显示当前用户和组
whoami
4、查看操作表的命令
table_help
5、退出hbase
exit或者ctrl+c
二、DDL相关
注:DDL是用于定义和管理数据库中的结构的命令,例如创建,删除,修改表等操作
1、创建表
注:创建表的时候需要指定表名和列列簇
create 'student','info','detail'
也可指定更多的属性如下:
create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true},{NAME => 'f2',..}
2、修改表结构(添加、删除)
1添加一个列簇
alter '表名','列簇名'
2删除一个列簇
alter '表名',{NMAE=>'列簇名',METHOD=>'delete'}
3修改列簇的属性
修改f1列族的版本为5
alter 't1', NAME => 'f1', VERSIONS => 5
3、获取表的描述
describe
4、列举所有的表
list
5、表是否存在
exists
6、启用表和禁用表
enable启用表
enable 'student'
判断标是否被启动
is_enabled 'student'
disable 禁用表
disable 'student'
判断表是否被禁用
is_disabled
7、删除表
drop
当我们想要删除一个表的时候,需要先将该表禁用
disable
然后再执行删除命令,否则会报错
drop 'student'
8、获取rowKey所在的区locate_region
locate_region '表名','行键'
9、hbase中的命名空间
1、查看hbase中的命名空间
list_namespace
2、为什么要搞命名空间
答:因为hbase中没有数据库的概念,那我们怎么区分表所放的位置呢,就可以使用命名空间,可以起到分类管理表的作用
3、获取命名空间的描述
describe_namespace 'default'
4、查看命名空间下的所有表
list_naemspace_tables 'default'
5、创建命名空间
create_namespace 'bigdata32'
6、删除命名空间
drop_namespace 'bigdata32'
DML相关
注:DML指的是操作数据库语言
1、插入或者修改数据put
put '表名','行键','列族名','列值'
put '表名','行键','列族名:列名','列值'
创建表
create 'users', 'info', 'detail', 'address'
第一行数据
put 'users', 'mengday', 'info:id', '1'
put 'users', 'mengday', 'info:name', '张三'
put 'users', 'mengday', 'info:age', '28'
put 'users', 'mengday', 'detail:birthday', '1990-06-26'
put 'users', 'mengday', 'detail:email', '[email protected]'
put 'users', 'mengday', 'detail:create_time', '2019-03-04 14:26:10'
put 'users', 'mengday', 'address', '上海市'
第二行数据
put 'users', 'vbridbest', 'info:id', '2'
put 'users', 'vbridbest', 'info:name', '李四'
put 'users', 'vbridbest', 'info:age', '27'
put 'users', 'vbridbest', 'detail:birthday', '1990-06-27'
put 'users', 'vbridbest', 'detail:email', '[email protected]'
put 'users', 'vbridbest', 'detail:create_time', '2019-03-05 14:26:10'
put 'users', 'vbridbest', 'address', '北京市'
第三行数据
put 'users', 'xiaoming', 'info:id', '3'
put 'users', 'xiaoming', 'info:name', '王五'
put 'users', 'xiaoming', 'info:age', '26'
put 'users', 'xiaoming', 'detail:birthday', '1990-06-28'
put 'users', 'xiaoming', 'detail:email', '[email protected]'
put 'users', 'xiaoming', 'detail:create_time', '2019-03-06 14:26:10'
put 'users', 'xiaoming', 'address', '杭州市'
2、全表扫描scan
scan '表名'
扫描整个列族
sacn 'users',{COLUMN=> '列族名'}
扫描整个列族的某一个列
scan 'users',{COLUMN=>'info:age'}
3、获取数据get
get '表名','行键'
get 'users','mengday'
根据某一行某列族的数据
get '表名', '行键', '列族名'
get 'users', 'xiaoming', 'info'
4、删除某个列族中的某个列delete
delete '表名','行键','列族名:列名'
delete 'users','xiaoming','info:age'
5、删除某行数据
deleteall '表名','行键'
deleteall 'users','xiaoming'
6、清除整个表中的数据truncate
truncate '表名'
7、自增incr
incr '表名', '行键', '列族:列名', 步长值
incr 'tbl_user', 'xiaohong', 'info:age', 1
8、计数器
get_counter
create 'counters', 'daily', 'weekly', 'monthly'
incr 'counters', '20240415', 'daily:hits', 1
incr 'counters', '20110101', 'daily:hits', 1
get_counter 'counters', '20110101', 'daily:hits'
9、修饰词
修饰词
scan '表名', {COLUMNS => [ '列族名1:列名1', '列族名1:列名2', ...]}
TIMESTAMP 指定时间戳
scan '表名',{TIMERANGE=>[timestamp1, timestamp2]}
VERSIONS
默认情况下一个列只能存储一个数据,后面如果修改数据就会将原来的覆盖掉,可以通过指定VERSIONS时HBase一列能存储多个值。
alter 'tbl_test', { NAME=>'columnFamily1', VERSIONS=>3 }
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value1'
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value2'
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value3'
STARTROW
ROWKEY起始行。会先根据这个key定位到region,再向后扫描
scan '表名', { STARTROW => '行键名'}
STOPROW :截止到STOPROW行,STOPROW行之前的数据,不包括STOPROW这行数据
scan '表名', { STOPROW => '行键名'}
LIMIT 返回的行数
scan '表名', { LIMIT => 行数}
10、条件过滤器
1、ValueFilter值过滤器
scan '表名', FILTER=>"ValueFilter(=,'binary:列值')"
scan '表名', FILTER=>"ValueFilter(=,'substring:列值')"
如:
scan 'tbl_user', FILTER=>"ValueFilter(=, 'binary:26')"
scan 'tbl_user', FILTER=>"ValueFilter(=, 'substring:6')"
2、ColumnPrefixFilter 列名前缀过滤器
scan '表名', FILTER=>"ColumnPrefixFilter('列名前缀')"
如:
scan 'tbl_user', FILTER=>"ColumnPrefixFilter('birth')"