1. 进入Hbase命令行
hbase shell
2. Hbase命名空间操作
-
列出所有命名空间
list_namespace
-
创建namespace
create_namespace 'ns1'
-
查询指定namespace下的表
list_namespace_tables 'ns1'
-
删除指定namespace
# 前提是该namespace是空的 drop_namespace 'ns1'
3. Hbase表的操作
关于表的操作包括(创建create,查看表列表list。查看表的详细信息desc,删除表drop,清空表truncate,修改表的定义alter)
1. 创建: create
-
创建表时必须指定列族
# t1/t2为表名, f1, f2, f3是列族的名 create 't1', {NAME => 'f1'}, {NAME =>'f2'}, {NAME =>'f3'} create 't2', 'f1', 'f2', 'f3' # 在指定namespace下创建表, 如果不指定,则默认在default下创建 create 'ns1:t1', 'cf1'
-
可以给每个列族指定版本数
create 't3', {NAME=>'f1', VERSIONS=>5}, {NAME=>'f2', VERSIONS=>3}
2. list 查看表列表
-
查看所有表
list
-
查看以t开头的表
list 't.*'
-
获取指定namespace下的表
list_namespace_tables 'default'
3. desc: 查看表的详细信息
desc '表名'
4. alter: 修改表的定义
-
添加一个列族
alter 't1', 'f4' alter 't2', {NAME=>'f4'}
-
删除列族
alter 't1', 'delete' => 'f3' alter 't2', NAME=>'f3', METHOD=>'delete'
-
添加列族和删除列族同时进行
# 必须将添加的列族写在前面, 否则会报错 alter 't1', 'f3', 'delete'=>'f4' alter 't2', {NAME=>'f3'}, {NAME=>'f4', METHOD=>'delete'}
5. truncate: 清空表
truncate 't3'
6. disable/enable: 停用表
-
停用表
disable 'user_info'
-
启用表
enable 'user_info'
7. drop: 删除表
删除表之前必须先停用该表
drop 't3'
3. HBase表中数据的操作
关于数据的操作(增put,删delete,查get + scan, 改==变相的增加)
1. put: 增
格式:
put ‘表名’, ‘rowkey’, ‘列族:列’, ‘值’
put ‘表名’, ‘rowkey’, ‘列族:列’, ‘值’, 时间戳
-
不设置时间戳
# 向user_info表中 rowkey为user01, 列为base_info:name的单元格插入数据"zhangsan1" put 'user_info', 'user01', 'base_info:name', 'zhangsan1' # 为了后续测试, 插入以下数据集 put 'user_info', 'user02', 'base_info:name', 'zhangsan2' put 'user_info', 'user03', 'base_info:name', 'zhangsan3' put 'user_info', 'user04', 'base_info:name', 'zhangsan4' put 'user_info', 'user05', 'base_info:name', 'zhangsan5' put 'user_info', 'user06', 'base_info:name', 'zhangsan6' put 'user_info', 'user07', 'base_info:name', 'zhangsan7' put 'user_info', 'user08', 'base_info:name', 'zhangsan8' put 'user_info', 'user01', 'base_info:age', '21' put 'user_info', 'user02', 'base_info:age', '22' put 'user_info', 'user03', 'base_info:age', '23' put 'user_info', 'user04', 'base_info:age', '24' put 'user_info', 'user05', 'base_info:age', '25' put 'user_info', 'user06', 'base_info:age', '26' put 'user_info', 'user07', 'base_info:age', '27' put 'user_info', 'user08', 'base_info:age', '28' put 'user_info', 'user01', 'extra_info:Hobbies', 'music' put 'user_info', 'user02', 'extra_info:Hobbies', 'sport' put 'user_info', 'user03', 'extra_info:Hobbies', 'music' put 'user_info', 'user04', 'extra_info:Hobbies', 'sport' put 'user_info', 'user05', 'extra_info:Hobbies', 'music' put 'user_info', 'user06', 'extra_info:Hobbies', 'sport' put 'user_info', 'user07', 'extra_info:Hobbies', 'music' put 'user_info', 'user08', 'extra_info:Hobbies', 'music' put 'user_info', 'user01', 'base_info:name', 'baiyc1' put 'user_info', 'user02', 'base_info:name', 'baiyc2' put 'user_info', 'user03', 'base_info:name', 'baiyc3' put 'user_info', 'user04', 'base_info:name', 'baiyc4' put 'user_info', 'user05', 'base_info:name', 'baiyc5' put 'user_info', 'user06', 'base_info:name', 'baiyc6' put 'user_info', 'user07', 'base_info:name', 'baiyc7' put 'user_info', 'user08', 'base_info:name', 'baiyc8' put 'user_info', 'user01', 'base_info:age', '21' put 'user_info', 'user02', 'base_info:age', '22' put 'user_info', 'user03', 'base_info:age', '23' put 'user_info', 'user04', 'base_info:age', '24' put 'user_info', 'user05', 'base_info:age', '25' put 'user_info', 'user06', 'base_info:age', '26' put 'user_info', 'user07', 'base_info:age', '27' put 'user_info', 'user08', 'base_info:age', '28' put 'user_info', 'user01', 'extra_info:Hobbies', 'music' put 'user_info', 'user02', 'extra_info:Hobbies', 'sport' put 'user_info', 'user03', 'extra_info:Hobbies', 'music' put 'user_info', 'user04', 'extra_info:Hobbies', 'sport' put 'user_info', 'user05', 'extra_info:Hobbies', 'music' put 'user_info', 'user06', 'extra_info:Hobbies', 'sport' put 'user_info', 'user07', 'extra_info:Hobbies', 'music' put 'user_info', 'user08', 'extra_info:Hobbies', 'sport'
-
设置时间戳
put 't1', 'r1', 'cf1:name', 'Jack', 22222
2. get: 查
get方式必须指定rowkey, 只能获取某一条数据
-
获取表中指定rowkey下的所有数据
# 获取user_info表中rowkey为user01的所有数据 get 'user_info', 'user01'
-
获取表中指定rowkey下指定列族的所有数据
# 获取user_info 表中rowkey为user01下列族base_info下的所有数据 get 'user_info', 'user01', 'base_info'
-
获取表中指定rowkey下指定列的所有数据
# 获取user_info 表中rowkey为user01的列族base_info中name列的所有数据 get 'user_info', 'user01', 'base_info:name'
-
获取不同版本的数据
# 如果没有指定时间戳, 则默认是插入时的时间戳 put 't1', 'r1', 'cf1:name', 'Tom' put 't1', 'r1', 'cf1:name', 'Jack', 22222 # 默认获取最新版本的数据, 时间戳最大的版本 get 't1', 'r1'
get 't1', 'r1', {COLUMN=>'cf1:name', VERSIONS=>2}
3. scan: 查
-
获取表中所有数据
scan 'user_info'
-
查询大于等于指定rowkey的数据
包括开始的rowkey
scan 'user_info', STARTROW=>'user07' scan 'user_info', {STARTROW=>'user07'}
-
查询小于指定rowkey的数据
不包括结束的rowkey
scan 'user_info', STOPROW=>'user03' scan 'user_info', {STOPROW=>'user03'}
-
查询指定范围内的rowkey的数据
包括开始的rowkey, 但是不包括结束的row可以
scan 'user_info', STARTROW=>'user05', STOPROW=>'user07' scan 'user_info', {STARTROW=>'user05', STOPROW=>'user07'}
-
查询表中指定列族为base_info的信息
scan 'user_info', {COLUMNS => 'base_info'}
3. delete
-
删除表中指定rowkey中指定列的数据
# 删除user_info表中, rowkey为user01, base_info:age列下的数据 delete 'user_info', 'user01', 'base_info:age'
-
delete 删除时, 必须定位到列, 不能直接删列族, 不会生效
5. deleteall: 删除整行数据
delete一条语句只能删除一个单元中的数据, 如果要删除整行数据, 则需要使用deleteall
deleteall 'user_info', 'user07'