Java 如何基于两列查询HBase';射程?

Java 如何基于两列查询HBase';射程?,java,database,hbase,nosql,Java,Database,Hbase,Nosql,我有一个HBase表,其模式如下: 行键,col1,col2,col3 我想根据两列上的范围查询表,如: 1000

我有一个HBase表,其模式如下:

行键,col1,col2,col3

我想根据两列上的范围查询表,如:

1000<行键<1000000和 200
我该怎么做?我注意到JavaAPI提供了MultiRowRangeFilter,它只能过滤一列,但我想根据范围过滤两列。有人有什么想法吗?提前感谢。

当按1行键范围和1列范围查询时,
多行范围过滤器
不适用,因为它要过滤多个行键范围,例如

100 < rowKey < 200 AND 1500 < rowKey < 2000

您希望按1行键和1列进行查询,而不是按2列进行查询。是吗?是的,我想按1行键和1另一列进行查询。有什么想法吗?非常感谢你的回复!Scan()中提供的两个参数是否正在对行键执行查询?我必须显式指定行键吗?谢谢,是的。我使用的是hbase客户端版本1.2.4。它提供
扫描(字节[]开始行,字节[]停止行)
构造函数。您不必指定任何其他内容。应该看看API文档
byte[] keyStart = Bytes.toBytes(1000);
byte[] keyEnd  = Bytes.toBytes(1000000);
byte[] columnMin = Bytes.toBytes(200);
byte[] columnMax = Bytes.toBytes(300);
byte[] cf = Bytes.toBytes(familyName)
byte[] column = Bytes.toBytes(columnNameToBeFiltered)

Scan scan = new Scan(keyStart, keyEnd);
FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);

SingleColumnValueFilter filter1 = new SingleColumnValueFilter(
cf, column, CompareOp.GREATER, columnMin);
list.add(filter1);

SingleColumnValueFilter filter2 = new SingleColumnValueFilter(
cf, column, CompareOp.LESS, columnMax);
list.add(filter2);
scan.setFilter(list);
ResultScanner scanner = table.getScanner(scan);
...//parsing result