hadoop - 我可以在 HBase 的 rowkey 上使用 SingleColumnValueFilter 吗?

标签 hadoop mapreduce hbase

HBase 版本:1.2.2 (服务器和 Java API)

public SingleColumnValueFilter(byte[] family,
                               byte[] qualifier,
                               CompareFilter.CompareOp compareOp,
                               ByteArrayComparable comparator)

我正在使用 org.apache.hadoop.hbase.filter.RegexStringComparator 对 rowkey 执行 LIKE 查询。

它可以很好地处理列。

但如果我使用行键而不是列,它会为我提供所有记录。

最佳答案

ColumnValue Filters and RowFilters are different.

Value Fileters operates on Column values(possibility of full table scan) where as RowFilters work on rowkey.


单列值过滤器:

此过滤器采用列族、限定符、比较运算符和比较器。如果未找到指定的列——将发出该行的所有列。如果找到该列并且与比较器的比较返回 true,则将发出该行的所有列。如果条件失败,则不会发出该行。

此过滤器还采用两个额外的可选 bool 参数——filterIfColumnMissing 和 setLatestVersionOnly

如果 filterIfColumnMissing 标志设置为 true 如果在行中找不到要检查的指定列,则不会发出该行的列。默认值为 false

如果 setLatestVersionOnly 标志设置为 false,它也会测试以前的版本(时间戳)。默认值为真。

这些标志是可选的,如果您必须不设置或两者都设置。

语法

SingleColumnValueFilter('','', , '', , )

    SingleColumnValueFilter(‘<family>’, ‘<qualifier>, <compare operator>, ‘<comparator>’)

示例:

hbase(main):020:0> scan 'airline' ,{ FILTER => "SingleColumnValueFilter('flightbetween','source',=, 'binary:Delhi')" }

如果要对rowkey进行“LIKE”查询

你可以使用 Prefix filter/FuzzyRowFilter(更高级)

前缀过滤器: 此过滤器将一个参数作为行键的前缀。它仅返回以指定行前缀开头的行中存在的那些键值

关于hadoop - 我可以在 HBase 的 rowkey 上使用 SingleColumnValueFilter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882758/

相关文章:

hadoop - 可以触发流选择特定文件

hadoop - 使用 Hadoop 的 Yarn 任务中的 InvocationTargetException

hadoop - Ubuntu 16.04上的Hadoop 2.8.1-资源管理器在NameNode上崩溃

eclipse - 在 Eclipse 中调试 MapReduce(Hadoop 2.2 或更高版本)

hadoop - MapReduce 任务数

hadoop - mapper和reducer类是否需要部署在一个Hadoop集群的所有节点上

hadoop - hbase和zookeeper的版本

java - 如何为 Mapreduce 设计键值对以找到集合中的最大值?

hadoop - 批量加载键值对数据到HBASE

java - Hbase 映射减少 : how to use custom class as value for the mapper and/or reducer?