目录
连接HBase
连接HBase并查看版本
帮助命令
查看服务器状态
查看当前数据库中有哪些表
命名空间
列出所有命名空间
新建命名空间
删除命名空间
修改命名空间
创建表
列举表
表结构
查询表
添加数据
更新数据
检查插入情况.
表扫描
按照条件查询
获取某一行
统计表数据行数
删除数据
禁用表
禁用表
清空表
启用表
启用表
变更表信息
添加列簇
删除列簇
修改版本信息
删除表
用户权限
退出
文档: https://hbase.apache.org/book.html#getting_started
本节我们将向您展示如何使用 hbase shell CLI 在 HBase 中创建表、在表中插入行、对表执行放置和扫描操作、启用或禁用表以及启动和停止 HBase。
主要讲述了HBase的CRUD等基本DDL和DML操作。
注意:HBase Shell 中的删除键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。
$ ./bin/hbase shell
HBase Shell; enter 'help' for list of supported commands.
Type "exit" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010
hbase(main):001:0> version
所有的帮助
hbase(main):001:0> help
指定命令的帮助
hbase(main):001:0> help 'create'
输入 help 然后
hbase(main):001:0> status
hbase(main):002:0> list
hbase(main):002:0> list_namespace
hbase(main):002:0> create_namespace 'ns1'
hbase(main):002:0> drop_namespace 'ns1'
该命名空间必须为空,否则系统不让删除。
hbase> alter_namespace 'ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
创建一个名为 test
的表,这个表只有一个 列族 为 cf
。可以列出所有的表来检查创建情况,然后插入些值。
hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds
以上我们分别插入了3行。第一个行key为row1
, 列为 cf:a
, 值是 value1
。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a
.
列出指定命名空间下的所有表
hbase> list_namespace_tables 'ns1'
列出所有表
hbase> list
查看表里面有哪些字段。
hbase(main):003:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =>
'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'f
alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536'}
1 row(s)
Took 0.9998 seconds
查询表是否存在
语法:exists ‘table_name’
hbase(main):005:0> exists 'test'
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value4'
0 row(s) in 0.0100 seconds
语法:scan ‘table_name’,{COLUMNS => [ ‘column_family:column’,… ], LIMIT => num}
全表Scan操作如下:
hbase(main):007:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1288380727188, value=value1
row2 column=cf:b, timestamp=1288380738440, value=value2
row3 column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds
扫描表scan,cf:a的前2条数据
hbase(main):004:0> scan 'test',{COLUMNS => 'cf:a',LIMIT => 2}
查询前几条数据
scan 'test',{LIMIT=>5}
#查询从指定行到结束行
hbase(main):009:0> scan 'test',{STARTROW => '1001', STOPROW => '1001'}
#查询从指定行开始五条
hbase(main):010:0> scan 'test',{STARTROW => '1001',LIMIT=>5}
get一行,操作如下
hbase(main):008:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds
查看“指定行”或“指定列族:列”的数据
hbase(main):008:0> get 'test', 'row1','cf:a'
COLUMN CELL
cf:a timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds
通过versions来获取多个版本的数据
hbase(main):019:0> get 'test','1001',{COLUMN=>'cf:a',VERSIONS => 2}
hbase(main):021:0> count 'test'
hbase(main):016:0> deleteall 'test','1001'
hbase(main):008:0> delete 'test', 'row1','cf:a'
判断表是否禁用
语法:is_disabled ‘table_name’
示例:判断test表是否禁用
hbase(main):026:0> is_disabled 'test'
hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):018:0> truncate 'test'
提示:清空表的操作顺序为先disable,然后再truncate。
判断表是否启用
语法:is_enabled ‘table_name’
示例:判断test表是否启用
hbase(main):005:0> is_enabled 'test'
hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds
命令格式:alter ‘表名’,‘列簇名’
alter 'test','cf1'
语法:alter ‘table_name’, {NAME => ‘column_family1’, METHOD => ‘delete’}
示例:将表test中的列簇cf删除
hbase(main):016:0> alter 'test',{NAME => 'cf',METHOD => 'delete'}
将cf列族中的数据存放3个版本:
hbase(main):022:0> alter 'test',{NAME=>'cf',VERSIONS=>3}
hbase(main):022:0> get 'test','1001',{COLUMN=>'cf:a',VERSIONS=>3}
查看是否处理成功:
hbase(main):017:0> describe 'test'
disable 再 drop 这张表,可以清除你刚刚的操作
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds
user_permission ['表名'..]
grant '用户名' ,'RWXCA'
R - represents read privilege.
W - represents write privilege.
X - represents execute privilege.
C - represents create privilege.
A - represents admin privilege.
hbase(main):014:0> exit