本文仅仅是个人的学习笔记记录!
目录
创建表
创建数据库表的命令:create '表名', '列族名1','列族名2','列族名N'
create 'user','info01','info02'
增
增加数据:put‘表名’, ‘rowKey’, ‘列族 : 列’ , '值'
put 'user','0001','info01:name','张三'
put 'user','0002','info01:age','23'
put 'user','0003','info02:school','zgsfdx'
删
删除某个记录:delete‘表名’,‘行名’,‘列族:列'
delete 'user','0001','info01:name'
删除整行记录:deleteall '表名','rowkey'
deleteall 'user','0003'
清空表中所有的记录:truncate '表名'
truncate 'user'
删除表,先要屏蔽该表,才能对该表进行删除:disable ‘表名’
:drop '表名’
disable 'user'
drop 'user'
改
put就是重写一遍,进行覆盖,hbase没有修改,都是追加,即对相同rowKey、列族和列名的数据再次添加即为数据的更新
put 'user','0001','info01:name','zhangjie'
put 'user','0001','info01:name','123456'
查
#List查看创建的数据表
list
#查看表的结构:describe ‘表名’
describe 'user'
#查看记录的数量:count '表名'
count 'user'
#全表查询
scan tableName
scan 'user'
#查看某个rowKey下的所有记录:get '表名','rowKey'
get 'user','0001'
#查看某个rowKey列族的记录:get '表名','rowkey','列族'
get 'user','0001','info01'
#查看rowKey列族的某个列记录:get '表名','rowkey','列族:列’
get 'user','0001','info01:name'
#基于rowkey的单行查询
get tableName,'1’
#基于rowkey的范围扫描
scan tableName, {STARTROW=>‘1’,STOPROW=>‘2’}
过滤器
Hbase过滤器操作;
使用show_filter命令可以查看当前HBase支持的过滤器类型;
使用过滤器的语法格式如下所示:
scan '表名',{Filter => ”过滤器(比较运算符,’比较器’)”}
Filter=> :指明过滤的方法(过滤器),整体可用大括号引用,也可以不用大括号;
过滤的方法(过滤器)使用双引号引用;
比较方式(比较器)用小括号引用;
create 'stu','stuinfo','grades'
put 'stu','001','stuinfo:name','tom'
put 'stu','001','stuinfo:age','18'
put 'stu','001','stuinfo:sex','male'
put 'stu','001','grades:math','80'
put 'stu','001','grades:bigdata','85'
put 'stu','stu001','stuinfo:name','tom'
put 'stu','stu001','stuinfo:age','18'
put 'stu','stu001','stuinfo:sex','male'
put 'stu','stu001','grades:math','80'
put 'stu','stu001','grades:bigdata','85'
行键过滤器
包括:RowFilter、PrefixFilter、KeyOnlyFilter、FirstKeyOnlyFilter等
格式:scan ‘表名’,{Filter =>“过滤器( 比较运算符,’比较器’)”}
#RowFilter:针对行键进行过滤
#显示行键前缀为001的键值对
scan 'stu',{FILTER => "RowFilter(=,'substring:001')"}
#显示行键字节顺序大于002的键值对
scan 'stu',{FILTER => "RowFilter(>,'binary:002')"}
#PrefixFilter:行键前缀过滤器
#扫描前缀为001的行键
scan 'stu',FILTER => "PrefixFilter('001')"
#FirstKeyOnlyFilter:扫描全表,
#显示每个逻辑行的第一个键值对
scan 'stu',FILTER => "FirstKeyOnlyFilter()"
#InclusiveStopFilter:替代ENDROW返回终止条件行;
#扫描显示行键001到002范围内的键值对
scan 'stu',{STARTROW => '001',FILTER => "InclusiveStopFilter('002')"}
scan 'stu',{STARTROW => '001',ENDROW => '003'}
列族与列过滤器
包括:FamilyFilter、QualifierFilter、ColumnPrefixFilter、MultipleColumnPrefixFilter、ColumnRangeFilter
#FamilyFilter:针对列族进行比较和过滤
#显示列族前缀为stu开头的键值对
scan 'stu',{FILTER => "FamilyFilter(=,'substring:stu')"}
#QualifierFilter:列标识过滤器
#显示列名为name的记录
scan 'stu',FILTER => "QualifierFilter(=,'substring:name')"
#ColumnPrefixFilter:对列名前缀进行过滤。
#显示列名为name的记录
scan 'stu',{FILTER => "ColumnPrefixFilter('name')"}
#MultipleColumnPrefixFilter:可以指定多个前缀
#显示列名为name和age的记录
scan 'stu',{FILTER => "MultipColumnPrefixFilter('name','age')"}
#ColumnRangeFilter :设置范围按字典序对列名进行过滤
scan 'stu',FILTER => "ColumnRangeFilter('bi',true,'na',true)"
值过滤器
包括:ValueFilter、SingleColumnValueFilter
#ValueFilter :值过滤器。
#查询值等于19的所有键值对
scan 'stu',FILTER => "ValueFilter(=,'binary:19')"
scan 'stu',FILTER => "ValueFilter(=,'substring:19')"
#SingleColumnValueFilter :在指定的列族和列中进行值过滤器。
#查询stuinfo列族age列中值等于19的所有键值对
scan 'stu',{COLUMN => 'stuinfo:age',FILTER => "SingleColumnValueFilter('stuinfo','age',=,'binary:19')"}
其他过滤器
包括:ColumnCountGetFilter、PageFilter、ColumnPaginationFilter
#ColumnCountGetFilter :限制每个逻辑行返回的键值对数
#返回行键为001的前3个键值对
get 'stu','001',FILTER => "ColumnCountGetFilter(3)"
#PageFilter :基于行的分页过滤器,设置返回行数。
#显示一行
scan 'stu',FILTER => "PageFilter(1)"
#ColumnPaginationFilter :基于列的进行分页过滤器,需要设置偏移量与返回数量
#显示每行第1列之后的2个键值对
scan 'stu',FILTER => "ColumnPaginationFilter(2,1)"
本文仅仅是个人的学习笔记记录!