HBase 命令行客户端操作

HBase 命令行客户端操作

目录

启动 HBase 命令行客户端

[root@node-01 bin]# hbase shell

HBase 命令行帮助

hbase(main):004:0> help

通用命令

whoami 命令(查看当前用户)
hbase(main):004:0> whoami
status 命令(查看 HBase 集群状态)
hbase(main):002:0> status 
version 命令(查看 HBase 版本)
hbase(main):003:0> version
1.4.13

DDL 数据定义语言

名称空间(数据库)操作命令

list_namespace 命令(列出所有的名称空间)

名称空间相当于 MySQL 的数据库名

hbase(main):016:0> list_namespace
create_namespace 命令(创建带属性的名称空间)
hbase(main):005:0> create_namespace "dtinone",{'author'=>'binge'}
list_namespace_tables 命令(列出当前名称空间中的所有表)
hbase(main):008:0> list_namespace_tables "default"
describe_namespace 命令(查看名称空间的描述信息)
hbase(main):009:0> describe_namespace "dtinone"
alter_namespace 命令(更改名称空间的属性)
hbase(main):014:0> alter_namespace "dtinone",{METHOD=>"set","author"=>"root"}
drop_namespace 命令(删除空的名称空间)
hbase(main):010:0> drop_namespace "dtinone"

表操作命令

list 命令(查看当前的所有用户表)
hbase(main):006:0> list
create 命令(创建表)

格式:create 名称空间(数据库名):表名 ,列族名1 ,列族名2 ...(默认一个 region 分区)

hbase(main):004:0> create 't_user_info','base_info','extra_info' # 默认在 default 名称空间创建表
exists(查询表是否存在)
hbase(main):008:0> exists "t_user_info"
put 命令(插入数据)

格式:put 表名,行键,列族名:key,value

注:put 命令只能插入一个单元格的数据,插入表中一行数据需要通过以下几条命令一起完成

put 't_user_info','001','base_info:username','zhangsan'
alter 命令(添加列族、更改列族的版本数量)
hbase(main):094:0> alter "t_user_info","other"
scan 命令(扫描整个表)
hbase(main):008:0> scan 't_user_info' # 全表扫描,谨慎使用hbase(main):009:0> scan "t_user_info",{COLUMNS=>"base_info:age"} #扫描某列数据hbase(main):034:0> scan "t_user_info", {LIMIT=>2} #限制扫描范围hbase(main):001:0> scan 'hbase:meta'# 查看 meta 表
get 命令(查看单行表)

格式:get 表名,行键,[列族名1:key]

hbase(main):007:0> get 't_user_info','001' # 获取某行数据hbase(main):011:0> get "t_user_info","001","base_info" #获取某行某列族数据hbase(main):012:0> get "t_user_info","001","base_info:username","base_info:age" # 获取某行多列数据
delete 命令(删除单元格数据)

格式:delete 表名,行键,[列族名1:key]

删除数据会给该数据添加一个墓碑标记(tombstone),在数据进行大合并的时候会将添加有墓碑标记的数据丢弃。

# 删除某行某列数据hbase(main):010:0> delete 't_user_info','001','base_info:sex'
deleteall 命令(删除整行数据)
hbase(main):012:0> deleteall 't_user_info','002' #删除整行数据hbase(main):024:0> deleteall "t_user_info","001","extra_info:career" #删除某行某列数据
truncate 命令(清空表数据)

truncate 删除数据是先禁用表、删除表、新建一张空表,删除速度快(不会保留region的预分区)

hbase(main):023:0> truncate "dtinone:t_user"
truncate_preserver 命令(清空表数据)

注:删除整张表的数据,会保留 region 的预分区

hbase(main):027:0> truncate_preserve "dtinone:t_user2"
disable/drop 命令(删除表)

删除表之前需要先禁用表

# 禁用表hbase(main):020:0> disable 'user'# 删除表hbase(main):021:0> drop 'user'
append 命令(追加数据)
  • 追加本质上也是插入数据,插入的数据=旧数据+追加的内容;如果没有该列,将创建新的列并插入数据
hbase(main):036:0> append "t_user_info","001","base_info:username","_hello"
get_splits 命令(获取 region 数量、获取分片(区)数量)

region 的 startKey 和 endKey 是左闭右开

hbase(main):029:0> create 'split01','cf1',SPLITS=>['1000000','2000000','3000000'] 
count 命令(获取表的行数)
hbase(main):041:0> count "t_user_info"
incr 命令(计数器)

不能使用了 put 命令去修改计数器,会导致错误,原因为计数器被转换成 Bytes.toBytes()

hbase(main):048:0> incr "t_user_info","001","base_info:sn"COUNTER VALUE = 1hbase(main):052:0> get_counter "t_user_info","001","base_info:sn" #获取计数器COUNTER VALUE = 3
flush 命令(将内存数据刷写到磁盘)
hbase(main):054:0> flush "t_user_info"
major_compact 命令(HFile大合并)
  • 合并文件
  • 清除删除、过期、多余版本的数据
  • 提高读写数据的效率
hbase(main):056:0> major_compact "t_user_info"
describe 命令(查看表与列族的描述信息)
hbase(main):019:0> describe "t_user_info"
list_regions 命令(查看表的 region 信息)
hbase(main):021:0> list_regions "t_user_info"
locate_region 命令(根据 rowkey 定位 region)
hbase(main):023:0> locate_region "t_user_info","001"
snapshot / clone_snapshot 命令(表快照 /复制表)
hbase(main):009:0> snapshot "t_student","t_student_snapshot"

HBase 非交互 Shell

[root@node-03 ~]# hbase shell --help
[root@node-02 ~]# vim hbase_shell.txtcreate'shell','c'put'shell','10001','c:info','a'get'shell','10001'exit[root@node-02 ~]# hbase shell -n hbase_shell.txt
清空 HBase 数据
[root@node-01 conf]# hbase clean --cleanAll
posted @ 2022-01-13 18:58  追こするれい的人  阅读(345)  评论(0编辑  收藏  举报