自学内容网 自学内容网

Hbase操作手册

一:Hbase 创建数据库表

1.进入hbase shell
2.创建数据库表的命令:create '表名', '列族名1','列族名2','列族名N'
3.如果想查看所有数据库表,可以使用list 命令:
4.可以看到,刚创建的数据库表user 已经在数据库表的列表中,如果要看user表的结构,可以用命令:describe ‘user’

二:Hbase数据库表数据的增、删、改、查

1.Hbase 增加数据的语法格式如下:
put ‘表名’, ‘rowKey’, ‘列族 : 列’ ,  '值'
2.Hbase查询数据的语法格式如下:
 通过命令:scan ‘表名’   来查看表的所有记录
3.count  '表名' 来查看表中的所有记录的数量(根据rowKey来计算)
4.通过命令:get '表名','rowkey','列族' 来查看某个rowKey列族的记录
                     get '表名','rowkey','列族:列’来查看rowKey列族的某个列记录
5.Hbase删除数据的语法格式如下:
通过命令:delete ‘表名’,‘行名’,‘列族:列' 来删除某个记录
6. get来查询删除的记录是否删除成功:
                       get ‘表名’,‘行名’,‘列族:列'
7.deleteall '表名','rowkey' 来删除整行记录
8.      scan ’表名‘  来查看整个表的记录来看是否删除成功:
9.truncate '表名'  来清空表所有的记录

10.Hbase更新数据的语法格式如下:
通过命令:put就是重写一遍,进行覆盖,hbase没有修改,都是追加即对相同rowKey、列族和时间戳的数据再次添加即为数据的更新
       比如:put ‘user’,’1234’,’info1:name’,’zhangsan’

三:Hbase 删除数据库表

1.Hbase 删除数据库的语法格式如下(drop '表名'):
    在删除表时,先要屏蔽该表,才能对该表进行删除
    第一步: disable ‘表名’,第二步 :drop '表名'
2. Disable 表后可以通过命令:is_enabled '表名',查看当前表是否可用
3.false(不可用)。 通过drop命令对表进行删除:
4.最后用list命令查看user是否已被成功删除:

四:过滤器

一般需要配合比较运算符或比较器共同使用

使用过滤器的语法格式如下所示:
scan '表名',{Filter => ”过滤器(比较运算符,’比较器’)”}
1.行键过滤器

(1)RowFilter:针对行键进行过滤
         例1:显示行键前缀为0开头的键值对;
         scan'student',{FILTER=>"RowFilter(=,'substring:001')"}
(2)PrefixFilter:行键前缀过滤器
         例2:扫描前缀为001的行键
         scan'student',FILTER=>"PrefixFilter('001')"
(3)FirstKeyOnlyFilter:扫描全表,显示每个逻辑行的第一个键值对
         例4:scan 'student',FILTER=>"FirstKeyOnlyFilter()"
(4)InclusiveStopFilter:替代ENDROW返回终止条件行;
         例5:扫描显示行键001到002范围内的键值对
         scan 'student', {STARTROW=>'001',FILTER =>"InclusiveStopFilter('002')"}
         此条命令等同于:
         scan 'student', {STARTROW=>'001',ENDROW => '003'}
2.列族与列过滤器

(1)FamilyFilter:针对列族进行比较和过滤。
         例1:显示列族前缀为stu开头的键值对;
        scan'student',FILTER=>"FamilyFilter(=,'substring:stu’)”
(2)QualifierFilter:列标识过滤器。
         例2:显示列名为name的记录;                           scan'student',FILTER=>"QualifierFilter(=,'substring:name')"
(3)ColumnPrefixFilter:对列名前缀进行过滤。
         例2:显示列名为name的记录;
                    scan'student',FILTER=>"ColumnPrefixFilter('name’)”
         等价于scan'student',FILTER=>"QualifierFilter(=,'substring:name')"

(4)MultipleColumnPrefixFilter:可以指定多个前缀
         例3:显示列名为name和age的记录;
         scan 'student',FILTER=>"MultipleColumnPrefixFilter('name','age')"
(5)ColumnRangeFilter :设置范围按字典序对列名进行过滤; scan'student',FILTER=>"ColumnRangeFilter('bi',true,'na',true)"
3.值过滤器

(1)ValueFilter :值过滤器。
例1:查询值等于19的所有键值对
scan'student',FILTER=>"ValueFilter(=,'binary:19') " scan'student',FILTER=>"ValueFilter(=,'substring:19')
(2)SingleColumnValueFilter :在指定的列族和列中进行值过滤器。
例2:查询stuinfo列族age列中值等于19的所有键值对
scan'student',{COLUMN=>'stuinfo:age',FILTER=>"SingleColumnValueFilter('stuinfo','age',=,'binary:19')"}
4.其他过滤器
(1)ColumnCountGetFilter :限制每个逻辑行返回的键值对数
例1:返回行键为001的前3个键值对
get 'student','001',FILTER=>"ColumnCountGetFilter(3)"
(2)PageFilter:基于行的分页过滤器,设置返回行数。
例2:显示一行
scan'student',FILTER=>"PageFilter(1)"
(3)ColumnPaginationFilter:基于列的进行分页过滤器,需要设置偏移量与返回数量 。
例3:显示每行第1列之后的2个键值对scan'student',FILTER=>"ColumnPaginationFilter(2,1)"

五:例题

实操题

(1) 启动HBase    
cd /opt/hbase-1.2.6/bin/    进入hbase安装的bin目录下
./start-hbase.sh
(2) 连接HBase实例
hbase shell
(3) 查看存在哪些表
list
(4) 创造表people,表中有列簇info
create 'people','info'
(5)  向people表的列族info中添加数据(数据根据上表内容填写)
put ‘people’,’1001’,’info:name’,’jenny’
put ‘people’,’1002’,’info:name’,’sam’
put ‘people’,’1002’,’info:age’,’20’
(6)  people表添加一个列簇salary
alter 'people','salary'
(7)  查看people表结构
describe 'people'
(8)  向people表的列族salary中添加数据,并且base列的版本号(时间戳)都自定义为“1”(数据根据上表内容填写)
put ‘people’,’1001’,’salary:base’,’2000’,1
put ‘people’,’1002’,’salary:base’,’1300’,1
put ‘people’,’1002’,’salary:subsidy’,’500’
(9)  修改行键1002的列族salary的base列的值为1800,版本号为“2”
put ‘people’,’1002’,’salary:base’,’1800’,2
(10)  查看people表的所有的数据
scan 'people'
(11)  查看行键1002的列族salary的base列的版本号为1的值
get ‘people’,’1002’,{COLUMN=>’salary:base’,TIMESTAMP=>1}
(12)  使用“FamilyFilter”过滤器显示列族前缀为“sa”开头的键值对
scan ‘people’,FILTER=>”FamilyFilter(=,'substring:sa’)”
(13)  使用“RowFilter”过滤器显示行键等于1001的键值对
scan ‘people’,FILTER=>"RowFilter(=,'binary:1001')"
(14)  使用“ValueFilter”过滤器查询base值大于等于2000的所有键值对
scan 'people',FILTER=>"ColumnPrefixFilter('base') AND ValueFilter(>=,'binary:2000') "
(15)  删除行键为1002,列族为info,列为age的数据
delete ‘people’,’1002’,’info:age’
(16)  清空表people
truncate 'people'
(17)  删除表
drop ‘people’


原文地址:https://blog.csdn.net/weixin_42795092/article/details/142387266

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!