我正在使用扫描程序从HBase中检索行。我可以通过addColumn()方法设置我想要的列。但是,我真的需要能够检索所有以相同前缀开头的可变数量的列。
因此,我想要的所有列都以“USA”开头。我需要检索所有以此为开头的列,例如“USA-Virginia”,“USA-Hawaii”等。我不想要诸如“Canada-Quebec”之类的值。任何地方都没有完整列名的预定义值。我只需要以“USA”开头的所有人。有没有办法让HBase扫描仪这样做?我没有看到那里编写自定义扫描仪的方式。
我正在查看自定义过滤器,但这似乎限制了我得到的行,而不是指定我想要返回的列。想法?
我无法更改数据的结构,而且我的所有数据都在一个列族中。
感谢您的任何想法。我正在运行CDH3u4。
答案 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
,这可能会解决您的问题。