3

我正在使用扫描仪从 HBase 检索行。我可以通过 addColumn() 方法设置我想要返回的列。但是,我确实需要能够检索以相同前缀开头的可变数量的列。

因此,例如,我想要的所有列都以“USA”开头。我需要检索以它开头的所有列,例如“USA-Virginia”、“USA-Hawaii”等。我不想要“Canada-Quebec”等值。任何地方都没有完整列名的预定义值。我只需要所有以“美国”开头的。有没有办法让 HBase 扫描仪做到这一点?我没有看到太多编写自定义扫描仪的方式。

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

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

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

4

2 回答 2

5

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

像这样的东西应该可以解决问题:-

filter = new ColumnPrefixFilter(Bytes.toBytes("USA"))
于 2012-05-22T22:35:50.460 回答
0

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

于 2012-05-25T07:27:32.457 回答