HBase:自定义扫描程序仅按前缀检索列

时间:2012-05-22 17:55:40

标签: hbase

我正在使用扫描程序从HBase中检索行。我可以通过addColumn()方法设置我想要的列。但是,我真的需要能够检索所有以相同前缀开头的可变数量的列。

因此,我想要的所有列都以“USA”开头。我需要检索所有以此为开头的列,例如“USA-Virginia”,“USA-Hawaii”等。我不想要诸如“Canada-Quebec”之类的值。任何地方都没有完整列名的预定义值。我只需要以“USA”开头的所有人。有没有办法让HBase扫描仪这样做?我没有看到那里编写自定义扫描仪的方式。

我正在查看自定义过滤器,但这似乎限制了我得到的行,而不是指定我想要返回的列。想法?

我无法更改数据的结构,而且我的所有数据都在一个列族中。

感谢您的任何想法。我正在运行CDH3u4。

2 个答案:

答案 0 :(得分:5)

您需要的是ColumnPrefixFilter按列前缀
过滤键   http://archive.cloudera.com/cdh/3/hbase/apidocs/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.html

这样的事情可以解决问题: -

filter = new ColumnPrefixFilter(Bytes.toBytes("USA"))

答案 1 :(得分:0)

尝试使用org.apache.hadoop.hbase.filter.SubstringComparator,这可能会解决您的问题。