HBase命令行操作

hbase安装完成之后,给我们提供了一个命令行客户端,hbase shell

命名空间有关的命令:namespace组

增删改查
create_namespace "demo" # 创建一个demo的命名空间
drop_namespace "demo" # 删除一个demo的命名空间
list_namespace  
list_namespace_tables "hbase" # 显示hbase命名空间下的所有的表
describe_namespace "default" # 详细描述default命名空间

命名空间位置:
1. 去hdfs中查询:/hbase/data
2. 去zookeeper中查询:ls /hbase/namespace

表有关的命令:DDL组

创建表、删除表 、查询表、修改表
表是由列簇和行键组成的,创建表的时候只需要指定列簇即可
list:查看default命名空间的表


创建表:至指定列族名,不需指定具体的列
语法:create 'tablename', 'column_family01列族名', 'column_family02列族名'
hbase(main)> create 'student','info'
hbase(main)> create 'test:demo', "studentInfo", "classInfo"


描述表
hbase(main):019:0> describe "demo:stu"


is_disabled "demo:stu" # 显示当前表是否是禁用状态,意味着当前这个表的所有region停止对外服务了,客户找不到信息了
disable "demo:stu" # 禁用表stu
drop "demo:stu" # 删除表stu,只有禁用了表之后才能删除

describe "demo:stu" 
exists "demo:stu"

is_enabled "demo:stu" # 是否启用
list_regions "demo:stu" # 显示demo下有几个region

# 增加一个列族
alter "test:demo", "classInfo"

注意事项:
1、删除表的时候表必须被禁用
2、操作表的时候最好加上命令空间     "命名空间:表名"

如果没有加命令空间。那么表默认使用的是default命名空间

表数据有关的命令

# 检查demo空间下的表stu
hbase(main):027:0> describe "demo:stu"
Table demo:stu is ENABLED                                                                                                           
demo:stu                                                                                                                            
COLUMN FAMILIES DESCRIPTION                                                                                                         
{NAME => 'classInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN
G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_S
COPE => '0'}                                                                                                                        
{NAME => 'studentInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCOD
ING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION
_SCOPE => '0'}                                                                                                                      
2 row(s) in 0.0560 seconds

# 增加数据
hbase(main):028:0> put "demo:stu", "s001", "classInfo:cname", "1911"
0 row(s) in 0.5020 seconds

增加、删除、修改、查询表数据
hbase中的表数据有行键和列族组成,添加数据的时候只能一列一列添加
查询数据
1、scan:查询的表中所有行的数据
scan  "表名",{COLUMNS=>["",""],LIMIT=>10}
2、get:查询指定row key的数据
get  "表名","行键",{COLUMN=>["",""]}
增加修改数据
put   "表名","行键","列簇:列名","value"

# 查看表中的数据
hbase(main):029:0> scan "demo:stu"
ROW                                COLUMN+CELL                                                                                      
 s001                              column=classInfo:cname, timestamp=1662984205030, value=1911                                      
1 row(s) in 0.0620 seconds

# 增加数据
hbase(main):030:0> put "demo:stu", "s001", "studentInfo:name", "zs"
0 row(s) in 0.0290 seconds

# 增加数据
hbase(main):031:0> put "demo:stu", "s001", "studentInfo:age", "11"
0 row(s) in 0.0200 seconds

# 查看表中的数据
hbase(main):032:0> scan "demo:stu"
ROW                                COLUMN+CELL                                                                                      
 s001                              column=classInfo:cname, timestamp=1662984205030, value=1911                                      
 s001                              column=studentInfo:age, timestamp=1662984351689, value=11                                        
 s001                              column=studentInfo:name, timestamp=1662984337491, value=zs                                       
1 row(s) in 0.0270 seconds

# 如果rowkey相同的话,将相同的列族修改
hbase(main):033:0> put "demo:stu", "s001", "studentInfo:name", "ls"
0 row(s) in 0.0140 seconds

# 查看表中的数据
hbase(main):034:0> scan "demo:stu"
ROW                                COLUMN+CELL                                                                                      
 s001                              column=classInfo:cname, timestamp=1662984205030, value=1911                                      
 s001                              column=studentInfo:age, timestamp=1662984351689, value=11                                        
 s001                              column=studentInfo:name, timestamp=1662984385843, value=ls                                       
1 row(s) in 0.0450 seconds

# 根据表名查看表中的数据
hbase(main):004:0> scan "demo:stu", {COLUMNS=>["studentInfo:name", "studentInfo:age"],LIMIT=>2}
ROW                                COLUMN+CELL                                                                                      
 s001                              column=studentInfo:age, timestamp=1662984351689, value=11                                        
 s001                              column=studentInfo:name, timestamp=1662984385843, value=ls                                       
1 row(s) in 0.4740 seconds

# 获取rowkey为s001的数据
hbase(main):005:0> get "demo:stu", "s001"
COLUMN                             CELL                                                                                             
 classInfo:cname                   timestamp=1662984205030, value=1911                                                              
 studentInfo:age                   timestamp=1662984351689, value=11                                                                
 studentInfo:name                  timestamp=1662984385843, value=ls                                                                
1 row(s) in 0.0750 seconds

# 获取rowkey为s001,classInfo为cname的数据
hbase(main):009:0> get "demo:stu", "s001", {COLUMNS=>["classInfo:cname"]}
COLUMN                             CELL                                                                                             
 classInfo:cname                   timestamp=1662984205030, value=1911                                                              
1 row(s) in 0.0110 seconds


删除数据
1、delete:删除指定行的指定列的数据
2、deleteall:除了具备delete的功能,还具备删除一整行数据
3、truncate:清空表数据

# delete删除数据
hbase(main):013:0> delete "demo:stu", "s001", "classInfo: cname"
0 row(s) in 0.1610 seconds

# deleteall删除全部命令
hbase(main):014:0> deleteall "demo:stu", "s001"
0 row(s) in 0.0480 seconds

# count统计表中有多少行数据
count "demo:stu"

# 清空表数据
hbase(main):015:0> truncate "demo:stu"


【注意事项】
1、hbase中的shell中退格键无法使用的,如果删除的话  crtl+退格键
2、hbase中除了自带命令以外,写的名字数据必须使用单引号或者双引号包裹
posted @ 2022-09-12 22:37  jsqup  阅读(176)  评论(0编辑  收藏  举报