我是靠谱客的博主 兴奋镜子,最近开发中收集的这篇文章主要介绍HBase相关shell操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HBase相关shell操作

我们可以使用shell的方式维护和管理HBase。例如:执行建表语句、执行增删改查操作等。

进入HBase客户端操作界面

/bin/hbase shell

查看帮助命令

help

查看当前数据库中有哪些表

list

创建一张表

# 创建user表,包含info、data两个列族
create 'user','info','data'
# 或者
create 'user',{NAME => 'info', VERSIONS => '3'},{NAME => 'data'}

添加数据操作

# 向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、通过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、更新版本号
## 将user表的f1列族版本号改为5
alter 'user',NAME => 'info', VERSIONS => 5

删除数据以及删除操作

# 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.

统计一张表有多少行数据

count 'user'

HBase高级Shell管理命令

# 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操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部