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中除了自带命令以外,写的名字数据必须使用单引号或者双引号包裹
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/16686795.html