HBase相关shell操作
我们可以使用shell的方式维护和管理HBase。例如:执行建表语句、执行增删改查操作等。
进入HBase客户端操作界面
复制代码
1
2/bin/hbase shell
查看帮助命令
复制代码
1
2help
查看当前数据库中有哪些表
复制代码
1
2list
创建一张表
复制代码
1
2
3
4
5# 创建user表,包含info、data两个列族 create 'user','info','data' # 或者 create 'user',{NAME => 'info', VERSIONS => '3'},{NAME => 'data'}
添加数据操作
复制代码
1
2
3
4
5
6
7
8
9
10
11
12# 向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan put 'user','rk0001','info:name','zhangsan' # 向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female put 'user','rk0001','info:gender','female' # 向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20 put 'user','rk0001','info:age',20 # 向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture put 'user','rk0001','data:pic','picture'
查询数据操作
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62# 1、通过rowkey进行查询 ## 获取user表中row key为rk0001的所有信息 get 'user','rk0001' # 2、查看rowkey下面的某个列族的信息 ## 获取user表中row key为rk0001,info列族的所有信息 get 'user','rk0001','info' # 3、查看rowkey指定列族指定字段的值 ## 获取user表中row key为rk0001,info列族的name、age列标示符的信息 get 'user','rk0001','info:name','info:age' # 4、查看rowkey指定多个列族的信息 ## 获取user表中row key为rk0001,info、data列族的信息 get 'user','rk0001','info','data' ## 或者 get 'user','rk0001',{COLUMN => ['info', 'data']} ## 或者 get 'user','rk0001',{COLUMN => ['info:name', 'data:pic']} # 5、指定rowkey与列值查询 ## 获取user表中row key为rk0001,cell的值为zhangsan的信息 get 'user','rk0001',{FILTER => "ValueFilter(=,'binary:zhangsan')"} # 6、查询所有数据 : 查询user表中的所有信息 scan 'user' scan 'user',{FORMATTER => 'toString'} scan 'user',{LIMIT => 3, FORMATTER => 'toString'} # 7、列族查询: 查询user表中列族为info的信息 scan 'user',{COLUMNS => 'info'} scan 'user',{COLUMNS => 'info', RAW => true, VERSIONS => 5} scan 'user',{COLUMNS => 'info', RAW => true, VERSIONS => 3} # 8、多列族查询: 查询user表中列族为info和data的信息 scan 'user',{COLUMNS => ['info', 'data']} scan 'user',{COLUMNS => ['info:name', 'data:pic']} # 9、指定列族与某个列名查询 ## 查询user表中列族为info、列标示符为name的信息 scan 'user',{COLUMNS => 'info:name'} # 10、指定列族与列名以及限定版本查询 ## 查询user表中列族为info、列标示符为name的信息,并且版本最新的5个 scan 'user',{COLUMNS => 'info:name', VERSIONS => 5} # 11、指定多个列族与按照数据值模糊查询 ## 查询user表中列族为info和data且列标示符中含有a字符的信息 scan 'user',{COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"} # 12、rowkey的范围值查询 ## 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据 scan 'user',{COLUMNS => 'info',STARTROW => 'rk0001', ENDROW => 'rk0003'} # 13、指定rowkey模糊查询 ## 查询user表中row key以rk字符开头的 scan 'user',{FILTER => "PrefixFilter('rk')"} # 14、指定数据范围值查询 ## 查询user表中指定范围的数据 scan 'user',{TIMERANGE => [1392368783980, 1392380169184]}
过滤器的查询地址:
http://hbase.apache.org/2.2/devapidocs/index.html
更新数据操作
复制代码
1
2
3
4
5# 1、更新数据值(操作同插入操作一模一样,只不过有数据就更新,没数据就添加) # 2、更新版本号 ## 将user表的f1列族版本号改为5 alter 'user',NAME => 'info', VERSIONS => 5
删除数据以及删除操作
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# 1、指定rowkey以及列名进行删除 ## 删除user表row key为rk0001,列标示符为info:name的数据 delete 'user', 'rk0001', 'info:name' # 2、指定rowkey,删除一整行数据 delete 'user','rk0001' # 3、删除一个列族 alter 'user',NAME => 'info', METHOD => 'delete' ## 或 alter 'user', 'delete' => 'info' # 4、清空表数据 truncate 'user' # 5、删除表 ## 首先需要让该表为disable状态 disable 'user' ## 然后drop表 drop 'user'
注意:
1.deleteall是在HBase 2.0版本后出现的,在2.0版本之前,只需要使用delete这个命令即可完成所有的数据删除工作
2.delete删除数据的时候,只会删除最新版本的数据,而deleteall直接将对应的数据的所有历史版本全部删除
3.如果不disable直接drop表,会报错:Drop the named table. Table must first be disabled.
统计一张表有多少行数据
复制代码
1
2count 'user'
HBase高级Shell管理命令
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28# 1) status 显示服务器状态 status 'node1' # 2) whoami 显示HBase当前用户 whoami # 3) list 显示当前所有的表 # 4) count 统计指定表的记录数 count 'user' # 5) describe 展示表结构信息 # 6) exists 检查表是否存在,适用于表特别多的情况 # 7) is_enabled、is_disabled 检查表是否启用或禁用 # 8) alter 该命令可以改变表和列族的模式 ## 为当前表增加列族 alter 'user', NAME => 'CF2', VERSIONS => 2 ## 为当前表删除列族 alter 'user', 'delete' => 'CF2' # 9) disable/enable 禁用/启用一张表 # 10) drop 删除一张表,记得在删除表之前必须先禁用 # 11) truncate 禁用表-删除表-创建表
最后
以上就是兴奋镜子最近收集整理的关于HBase相关shell操作的全部内容,更多相关HBase相关shell操作内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复