Hbase的shell操作
1.Hbase中的DDL操作
1)建表
语法1. create "namespace:表名","family column","family column"
语法2. {表的一些属性 必须包含列族}
create "namespace:表名",{NAME=> “”,VERSIONS => 3,TTL =>},{NAME => ""}
常用属性:VERSIONS => 1 指定数据版本, TTL => 2592000 指定数据存储周期
2)查看表列表
list
hbase> list 查看所有的表列表
hbase> list 'abc.*' 查看所有的指定字符开头的表 default 下的
hbase> list 'ns:abc.*' 查看指定的namespace下的所有的指定字符开头的表列表
hbase> list 'ns:.*' 查看指定namespace下的所有表列表
3)查看表的详细信息
help 'describe'
hbase> describe 't1' 查看default下的表的描述信息
hbase> describe 'ns1:t1' 查看指定namespace下的所有表描述信息的
4)查看表是否禁用
hbase中表有两种状态:
启用 enable 可以执行操作的
禁用 disable 不可以执行操作
is_disabled 查看表是否禁用 禁用true 启用 false
is_disabled "namespace:表名"
is_enabled 查看表是否启用 启用 true 禁用 false
5)禁用表和启用表的相关操作
disable "namespace:表名"
enable “namespace:表名”
6)删除表
先禁用表 在删除表
disable "namespace:表名"
drop "namespace:表名"
2.Hbase中的DML操作
1)向表中添加数据 put
行键 列族:列 值
hbase> put 'namespace:表名', '行键', '列族:列', '列的值' 如下:
put "bd1901:test2","rk001","info1:name","zs"
put "bd1901:test2","rk001","info1:age","18"
put "bd1901:test2","rk001","info1:addr","hebei"
2)查询表数据
1.扫描查询 scan
1)全表扫描:scan "表名" scan "ueser_info"
2)指定列扫描:scan "user_info",{COLUMNS=>["base_info:name","base_info:age"]}
3)指定显示行数:scan "user_info",{COLUMNS=>["base_info:name"],LIMIT=>需要显示的行数}
4)指定rowkey范围显示:scan "user_info",{COLUMNS=>["base_info:name"],LIMIT=>10,STARTROW => "",ENDROW => ""}这种显示方式,包含左边界,不包含右边界
5)可以指定时间戳范围 查询数据 TIMERANGE => [起始时间戳,终止的时间戳]
2.单条查询 get
1)查询指定行键的 只能查询一条数据的:hbase> get 'namespace:表名',"行键" get "user_info","zhangsan_20150701_0004"
2)指定需要查询的一行数据的列:
get "user_info","zhangsan_20150701_0004",{COLUMN => ["base_info:name","base_info:age"]}、
3)可以指定查询的数据的 时间戳范围的:
get "user_info","zhangsan_20150701_0004",{TIMERANGE => [1558844823464,1558847245992]}
时间戳 含头不含尾的
3)删除表数据 delete
delete 'namespace:表名', '行键', '列族:列', 时间戳
delete "user_info","zhangsan_20150701_0004","base_info:age",1558848338698
4)清空表数据
truncate "namespace:表名"