1、准备工作
1.1 建表
使用过滤器之前我们得先建个表,这里取名为Genshin,同时默认使用的系统时间戳
create 'Genshin',{NAME=>'MengDe',VERSIONS=>3},{NAME=>'LiYue',VERSIONS=>3},{NAME=>'DaoQi',VERSIONS=>3}
1.2 插入数据
数据来源:原神官网
逐条插入以下的数据:
put 'Genshin','0001','MengDe:name','琴'
put 'Genshin','0001','MengDe:sex','女'
put 'Genshin','0001','MengDe:ChinaCV','林簌'
put 'Genshin','0001','MengDe:JapanCV','斋藤千和'
put 'Genshin','0002','LiYue:name','魈'
put 'Genshin','0002','LiYue:sex','男'
put 'Genshin','0002','LiYue:ChinaCV','kinsen'
put 'Genshin','0002','LiYue:JapanCV','松冈祯丞'
put 'Genshin','0003','DaoQi:name','神里凌华'
put 'Genshin','0003','DaoQi:sex','女'
put 'Genshin','0003','DaoQi:ChinaCV','小N'
put 'Genshin','0003','DaoQi:JapanCV','早见沙织'
插入完数据后输入scan 'Genshin',{FORMATTER=>'toString'}查询到所有的数据
以下都是基于此数据进行一些过滤查询
2、Filter的使用
好了,上面的数据已经插入完成了,接下来开始Filter的使用
2.1 KeyOnlyFilter
实例1:查询Genshin表中的Rowkey(行键)。
输入以下语句:
scan 'Genshin',{FILTER=>'KeyOnlyFilter()'}
2.2 FirstKeyOnlyFilter
实例2.返回Genshin中每一RowKey(行键)的第一个key value pair(键值对)。
输入以下语句:
scan 'Genshin',{FILTER=>'FirstKeyOnlyFilter()'}
可以看到value显示的信息为一串16进制的信息,
如果想要显示中文的话,只需加一串格式化信息即可,如下:
scan 'Genshin',{FILTER=>'FirstKeyOnlyFilter()',FORMATTER=>'toString'}
其他同理,只要加条格式化信息FORMATTER=>'toString'就能显示出我们熟悉的中文,其他同理,为了方便查看数据,后者凡是出现此类情况的我都加词条语法
2.3 PrefixFilter
实例3.查询Genshin中以"00"开头的所有key-value pairs(键值对)且能正常显示汉字。 输入以下语句:
scan 'Genshin',{FILTER=>"PrefixFilter('00')",FORMATTER=>'toString'}
2.4 ColumnPrefixFilter
实例4.查询Genshin中以"name"作为前缀的列的key-value pairs(键值对)。 输入以下语句:
scan 'Genshin',{FILTER=>"ColumnPrefixFilter('name')",FORMATTER=>'toString'}
2.5 MultipleColumnPrefixFilter
实例5.
输入:查询Genshin中以"nam"、"ChinaC"、"JapanC"作为前缀且汉字能正常显示的列的key-value pairs(键值对)。
输入以下语句:
scan 'Genshin',{FILTER=>"MultipleColumnPrefixFilter('nam','ChinaC','JapanC')",FORMATTER=>'toString'}
2.6 ColumnCountGetFilter
ColumnCountGetFilter用来返回每行最多返回多少列,但返回的总数不超过设置的列数
实例6.
输入以下语句:
scan 'Genshin',{FILTER=>"ColumnCountGetFilter(2)",FORMATTER=>'toString'}
2.7 PageFilter
实例7.按照Rowkey(行键)对Genshin进行分页显示。
输入以下语句:
scan 'Genshin',{FILTER=>"PageFilter(1)",FORMATTER=>'toString'}
scan 'Genshin',{FILTER=>"PageFilter(2)",FORMATTER=>'toString'}
2.8 ColumnPaginationFilter
实例8.查询Genshin中以2作为limlit,以2作为offset的所有key-value pairs(键值对) map。
输入以下语句:
# 第一个"2"表示每个行键显示多少行,第二个"2"表示此行键中从第几条数据开始
scan 'Genshin',{FILTER=>"ColumnPaginationFilter(2,2)",FORMATTER=>'toString'}
2.9 InclusiveStopFilter
实例9.查询Genshin中Rowkey(行键)截止到“0002”的所有key-value pairs map。 输入以下语句:
scan 'Genshin',{FILTER=>"InclusiveStopFilter('0002')",FORMATTER=>'toString'}
2.10 TimestampsFilter
实例10.查询timestamp为2021年10月16日20点10分45.583秒所对应的key-value(键值对) pairs map。
PS:因为HBase显示的时间是我们易懂的,实质在内部是一串long int值,我们需要手动转换
我这里直接用在线时间戳转换来转换成一串这样的数值
scan 'Genshin',{FILTER=>"TimestampsFilter(1634386245583)",FORMATTER=>'toString'}
可以看到我输入的第一条数据显示出来了~~~~
2.11 RowFilter
实例11.查询Genshin中Rowkey(行键)小于或等于“0002”的key-value pairs map。 输入以下语句:
scan 'Genshin',{FILTER=>"RowFilter(<=,'binary:0002')",FORMATTER=>'toString'}
2.12 FamilyFilter
实例12.查询Genshin中comlumn family name(列族名)为以"Dao"字母开头的所有keyvalue pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"FamilyFilter(=,'regexstring:Dao*')",FORMATTER=>'toString'}
2.13 QualifierFilter
实例13.查询Genshin中column qualifier(列族下的列名)为"ChinaCV"的所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"QualifierFilter(=,'binary:ChinaCV')",FORMATTER=>'toString'}
2.14 ValueFilter
实例14.查询name为"琴"的所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"ValueFilter(=,'binary:琴')",FORMATTER=>'toString'}
2.15 DependentColumnFilter
实例15.查询Genshin中与Columnfamily:MengDe , Columnqualifier:name 相同timstamp的所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"DependentColumnFilter('MengDe','name')",FORMATTER=>'toString'}
2.16 SingleColumnValueFilter
实例16.查询琴所在行中所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"SingleColumnValueFilter('MengDe','name',=,'binary:琴',true,true)",FORMATTER=>'toString'}
2.17 SingleColumnValueExcludeFilter
实例17.查询琴所在行中除琴之外的其它所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"SingleColumnValueExcludeFilter('MengDe','name',=,'binary:琴',true,true)",FORMATTER=>'toString'}
2.18 ColumnRangeFilter
实例18.查询包含列名从字母'A'开头到字母'D'开头的所有key-value pairs map。
输入以下语句:
scan 'Genshin',{FILTER=>"ColumnRangeFilter('A',true,'D',true)",FORMATTER=>'toString'}
评论区