侧边栏壁纸
  • 累计撰写 44 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

HBase过滤器的使用

博主
2024-01-18 / 0 评论 / 1 点赞 / 6 阅读 / 13185 字 / 正在检测是否收录...

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'}查询到所有的数据

image-20211016201149671.png

以下都是基于此数据进行一些过滤查询

2、Filter的使用

好了,上面的数据已经插入完成了,接下来开始Filter的使用

2.1 KeyOnlyFilter

实例1:查询Genshin表中的Rowkey(行键)。

输入以下语句:

scan 'Genshin',{FILTER=>'KeyOnlyFilter()'}

image-20211016201243395.png

2.2 FirstKeyOnlyFilter

实例2.返回Genshin中每一RowKey(行键)的第一个key value pair(键值对)。

输入以下语句:

scan 'Genshin',{FILTER=>'FirstKeyOnlyFilter()'}

image-20211016201320229.png

可以看到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'}

image-20211016201702174.png

2.4 ColumnPrefixFilter

实例4.查询Genshin中以"name"作为前缀的列的key-value pairs(键值对)。 输入以下语句:

scan 'Genshin',{FILTER=>"ColumnPrefixFilter('name')",FORMATTER=>'toString'}

image-20211016201728409.png

2.5 MultipleColumnPrefixFilter

实例5.

输入:查询Genshin中以"nam"、"ChinaC"、"JapanC"作为前缀且汉字能正常显示的列的key-value pairs(键值对)。

输入以下语句:

scan 'Genshin',{FILTER=>"MultipleColumnPrefixFilter('nam','ChinaC','JapanC')",FORMATTER=>'toString'}

image-20211016201834859.png

2.6 ColumnCountGetFilter

ColumnCountGetFilter用来返回每行最多返回多少列,但返回的总数不超过设置的列数

实例6.

输入以下语句:

scan 'Genshin',{FILTER=>"ColumnCountGetFilter(2)",FORMATTER=>'toString'}

image-20211016202650427.png

2.7 PageFilter

实例7.按照Rowkey(行键)对Genshin进行分页显示。

输入以下语句:

scan 'Genshin',{FILTER=>"PageFilter(1)",FORMATTER=>'toString'}
scan 'Genshin',{FILTER=>"PageFilter(2)",FORMATTER=>'toString'}

image-20211016203208137.png

2.8 ColumnPaginationFilter

实例8.查询Genshin中以2作为limlit,以2作为offset的所有key-value pairs(键值对) map。

输入以下语句:

# 第一个"2"表示每个行键显示多少行,第二个"2"表示此行键中从第几条数据开始
scan 'Genshin',{FILTER=>"ColumnPaginationFilter(2,2)",FORMATTER=>'toString'}

image-20211016204126009.png

2.9 InclusiveStopFilter

实例9.查询Genshin中Rowkey(行键)截止到“0002”的所有key-value pairs map。 输入以下语句:

scan 'Genshin',{FILTER=>"InclusiveStopFilter('0002')",FORMATTER=>'toString'}

image-20211016204212905.png

2.10 TimestampsFilter

实例10.查询timestamp为2021年10月16日20点10分45.583秒所对应的key-value(键值对) pairs map。

PS:因为HBase显示的时间是我们易懂的,实质在内部是一串long int值,我们需要手动转换

我这里直接用在线时间戳转换来转换成一串这样的数值

image-20211016204533851.png

scan 'Genshin',{FILTER=>"TimestampsFilter(1634386245583)",FORMATTER=>'toString'}

image-20211016204428889.png

可以看到我输入的第一条数据显示出来了~~~~

2.11 RowFilter

实例11.查询Genshin中Rowkey(行键)小于或等于“0002”的key-value pairs map。 输入以下语句:

scan 'Genshin',{FILTER=>"RowFilter(<=,'binary:0002')",FORMATTER=>'toString'}

image-20211016204713461.png

2.12 FamilyFilter

实例12.查询Genshin中comlumn family name(列族名)为以"Dao"字母开头的所有keyvalue pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"FamilyFilter(=,'regexstring:Dao*')",FORMATTER=>'toString'}

image-20211016204904977.png

2.13 QualifierFilter

实例13.查询Genshin中column qualifier(列族下的列名)为"ChinaCV"的所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"QualifierFilter(=,'binary:ChinaCV')",FORMATTER=>'toString'}

image-20211016205023562.png

2.14 ValueFilter

实例14.查询name为"琴"的所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"ValueFilter(=,'binary:琴')",FORMATTER=>'toString'}

image-20211016205105000.png

2.15 DependentColumnFilter

实例15.查询Genshin中与Columnfamily:MengDe , Columnqualifier:name 相同timstamp的所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"DependentColumnFilter('MengDe','name')",FORMATTER=>'toString'}

image-20211016205246821.png

2.16 SingleColumnValueFilter

实例16.查询琴所在行中所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"SingleColumnValueFilter('MengDe','name',=,'binary:琴',true,true)",FORMATTER=>'toString'}

image-20211016221717526.png

2.17 SingleColumnValueExcludeFilter

实例17.查询琴所在行中除琴之外的其它所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"SingleColumnValueExcludeFilter('MengDe','name',=,'binary:琴',true,true)",FORMATTER=>'toString'}

image-20211016221311363.png

2.18 ColumnRangeFilter

实例18.查询包含列名从字母'A'开头到字母'D'开头的所有key-value pairs map。

输入以下语句:

scan 'Genshin',{FILTER=>"ColumnRangeFilter('A',true,'D',true)",FORMATTER=>'toString'}

image-20211016222250795.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq

评论区