大数据列式数据库HBase 过滤器

本文介绍了HBase中过滤器的使用,如何通过自定义筛选器减少网络带宽和客户端处理的数据量。内容涵盖动态加载自定义筛选器、筛选语法指南、逻辑和比较运算符、各种类型的筛选器以及Java API和HBase Shell的示例。通过理解这些,可以更高效地从HBase中获取所需数据。
摘要由CSDN通过智能技术生成

使用 get 或 scan 操作从 hbase 读取数据时, 可以使用自定义筛选器将结果子集返回到客户端。虽然这不会减少服务器端 io, 但它确实会减少网络带宽, 并减少客户端需要处理的数据量。筛选器通常使用 java api, 但可从 hbase 命令行用于测试和调试目的。

有关 hbase 中获取和扫描的详细信息, 请参阅从 hbase 读取数据.

动态加载自定义筛选器
默认情况下, cdh 能够通过将带有筛选器的 jar 添加到hbase.dynamic.jars.dir属性指定的目录 (默认为 hbase 根目录下的lib/ ) 来动态加载自定义筛选器。

若要禁用动态 jar 的自动加载, 请hbase-site.xml . xml 的高级配置代码段中将hbase.use.dynamic.jarsfalse (如果使用 cloudera 管理器), 或者hbase-site.xml . xml. false

筛选语法指南
hbase 筛选器采用零个或多个参数, 在括号中。如果参数是字符串, 则由单引号 (“字符串”) 包围。

逻辑运算符、比较运算符和比较器
筛选器可以与逻辑运算符组合在一起。某些筛选器采用比较运算符和比较器的组合。以下是每个文件的列表。

逻辑运算符
and-键值必须传递要包含在结果中的两个筛选器。
or-键值必须传递至少一个要包含在结果中的筛选器。
skip-对于特定行, 如果任何键值未通过筛选条件, 则跳过整行。
while-对于特定行, 它将继续发出键值, 直到达到无法使用筛选条件的键值。
复合筛选器-使用这些运算符, 可以创建筛选器的层次结构。例如:
(Filter1 AND Filter2)OR(Filter3 AND Filter4)
比较运算符

少 (& lt;)
少 _ 或 _ 平等 (& lt; =)
相等 (=)
不 _ 平等 (! =)
伟大的 _ or _ equal (& gt; =)
伟大的 (& gt;)
no _ op (无操作)
比较
双字节比较器-词典记录与指定的字节数组Bytes.compareTo(byte[], byte[])方法进行比较。
-词典记录与指定的字节数组进行比较。它只比较此字节数组的长度。
-使用给定的正则表达式与指定的字节数组进行比较。只有EQUAL和NOT_EQUAL比较对这个比较器是有效的。
子字符串比较器-测试给定的子字符串是否出现在指定的字节数组中。比较不区分大小写。只有EQUAL和NOT_EQUAL比较对这个比较器是有效的。
例子
Example1: >, ‘binary:abc’ will match everything that is lexicographically greater than “abc”
Example2: =, ‘binaryprefix:abc’ will match everything whose first 3 characters are lexicographically equal to “abc”
Example3: !=, ‘regexstring:ab*yz’ will match everything that doesn’t begin with “ab” and ends with “yz”
Example4: =, ‘substring:abc123’ will match everything that begins with the substring “abc123”
复合运算符
在表达式中, 括号可用于将子句组合在一起, 括号具有最高的优先级。

SKIP是 skip 和WHILE运算符, 并且具有相同的优先级。

接下来是AND运算符。

OR运算符。

例子
A filter string of the form: “Filter1 AND Filter2 OR Filter3” will be evaluated as: “(Filter1 AND Filter2) OR Filter3”
A filter string of the form: “Filter1 AND SKIP Filter2 OR Filter3” will be evaluated as: “(Filter1 AND (SKIP Filter2)) OR Filter3”
筛选器类型
hbase 包括几种筛选器类型, 以及将筛选器组合在一起并创建自己的自定义筛选器的能力。
键式筛选器-不接受任何参数。返回每个键值对的键部分。
Syntax: KeyOnlyFilter ()
第一次 keyonlyfilter -不接受任何参数。返回第一个键值对的键部分。
Syntax: FirstKeyOnlyFilter ()
预修复器-采用单个参数, 行键的前缀。它只返回以指定行前缀开头的行中存在的键值
Syntax: PrefixFilter (‘<row_prefix>’)

Example: PrefixFilter (‘Row’)
列预置筛选器-采用单个参数, 列前缀。它只返回以指定列前缀开头的列中存在的键值。
Syntax: ColumnPrefixFilter (‘<column_prefix>’)

Example: ColumnPrefixFilter (‘Col’)
多列前缀筛选器-获取列前缀的列表。它返回以任何指定的列前缀开头的列中存在的键值。
Syntax: MultipleColumnPrefixFilter (‘<column_prefix>’, ‘<column_prefix>’, …, ‘<column_prefix>’)

Example: MultipleColumnPrefixFilter (‘Col1’, ‘Col2’)
列计数 getfilter -采用一个参数, 一个限制。它返回表中的第一个limit列数。
Syntax: ColumnCountGetFilter (‘’)

Example: ColumnCountGetFilter (4)
页面筛选器-采用一个参数, 一个页面大小。它返回表page size行数。
Syntax: PageFilter (‘<page_size>’)

Example: PageFilter (2)
列 paginationfilter -采用两个参数, 一个限制和偏移量。它返回偏移量后的限制列数。它对所有行执行此操作。
Syntax: ColumnPaginationFilter (‘’, ‘’)

Example: ColumnPaginationFilte

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值