hbase greater\u或\u eqaul运算符未按预期工作

zsohkypk  于 2021-07-15  发布在  Hadoop
关注(0)|答案(1)|浏览(534)

我的hbase表中有这一行:{rowkey:1_1611646861574/cf:value/1611646776287/put/vlen=8/seqid=0}现在我想做一个简单的扫描,查找列值大于“161138830000”的行。但不返回任何记录;但是,当我使用少于或等于1611647500000时,它返回此记录。奇怪的是我可以从ApachePhoenixSQL查询中得到这个记录:select*from my_table where value>=1611388300000。
所以number明显大于column值,apachephoenix返回它;为什么hbase compare操作符没有?
这是我的密码:

Table table = con.getTable(TableName.valueOf("my_table"));
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("value"));
FilterList flist = new FilterList(FilterList.Operator.MUST_PASS_ALL);
flist.addFilter(new PrefixFilter(Bytes.toBytes("1")));
flist.addFilter(new SingleColumnValueFilter(
                        Bytes.toBytes("cf"), Bytes.toBytes("value"), CompareOperator.GREATER_OR_EQUAL,
                        new BinaryComparator(Bytes.toBytes("1611388300000"))));
scan.setFilter(flist);
ResultScanner scanner = table.getScanner(scan);
for (Result result = scanner.next(); result != null; result = scanner.next())
     System.out.println("Found row : " + result);
scanner.close();
d5vmydt9

d5vmydt91#

我不知道为什么,但小于或等于字符串:

new SingleColumnValueFilter(
                    Bytes.toBytes("cf"), Bytes.toBytes("value"), CompareOperator.LESS_OR_EQUAL,
                    new BinaryComparator(Bytes.toBytes("1611647500000")))

但当我使用引号时,较大的\u或\u equal不起作用,所以我必须使用number(添加l以指定long)

new SingleColumnValueFilter(
                        Bytes.toBytes("ui"), Bytes.toBytes("C"), CompareOperator.GREATER_OR_EQUAL,
                        new BinaryComparator(Bytes.toBytes(1611388300000L)))

相关问题