hbase fuzzyrowfilter中的筛选范围?

njthzxwz  于 2021-06-10  发布在  Hbase
关注(0)|答案(0)|浏览(330)

我在hbase中有一些数据。密钥的结构类似于userid(整数)+datetimeinmillis(长)。我以前使用以下代码来获取范围之间的行:

Scan scan = new Scan(startKey.array(), endKey.array());
scan.addFamily(Bytes.toBytes(""));
ResultScanner result = table.getScanner(scan);

我需要知道userid和时间戳以便查询行。我的一个同事建议我使用fuzzyrowfilter来扫描数据进行测试,我发现它非常有用。我玩过一点模糊过滤器。这就是我如何在一天内针对所有userid获得结果的原因。

List<Pair<byte[], byte[]>> keys = new ArrayList<Pair<byte[], byte[]>>();
        keys.add(new Pair<byte[], byte[]>(
                startKey.array(), new byte[] { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }));
        Filter filter = new FuzzyRowFilter(keys);
        Scan scan = new Scan();
        scan.addFamily(Bytes.toBytes("d"));
        scan.setFilter(filter);

我无法根据我的用例调整此过滤器。我找不到任何指定范围的方法。我试着在网上搜索。大多数开发人员都说这个过滤器还不支持这个范围。有些人建议使用多个过滤器。除了使用多个过滤器,没有更好的方法来指定范围吗。为了得到更好的结果,我试着把键的最后一个字节设为“1”,但结果并没有达到我的预期。如果有人知道一个更好的方法来应用fuzzyrowfilter和range,或者已经实现了一个定制的range过滤器,我会很感激如果我能从他那里得到任何想法来获得最大的性能。
当做,

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题