首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MultiRowRangeFilter:如何限制每个RowRange的结果?

MultiRowRangeFilter:如何限制每个RowRange的结果?
EN

Stack Overflow用户
提问于 2018-07-27 18:16:26
回答 2查看 444关注 0票数 1

我正在尝试使用HBase MultiRowRangeFilter,以便最大限度地减少重复扫描尝试到服务器的往返次数。但是,我不知道如何处理这样的情况,即一个行范围可能包含太多的行,这将阻止Scan从其他范围返回任何行。

例如,考虑一个具有以下行键结构和内容的表:

代码语言:javascript
运行
复制
Bob|1|XXX (XXX is some random sequence)
Bob|1|XXX
Bob|1|XXX
Bob|2|XXX
Bob|2|XXX
Bob|2|XXX
Bob|3|XXX
Bob|3|XXX
Bob|3|XXX

在上表中,如何才能在每个Bob|~|范围内最多返回2行的Scan呢?

现在,虚拟代码看起来像这样:

代码语言:javascript
运行
复制
private void getRanges(Table tbl, Integer max) throws IOException
{
    List<RowRange> rowrangeList = new ArrayList<RowRange>();
    for (Integer i = 1; i <= 3; i++)
    {
        String rowKey = "Bob|" + i;
        RowRange rowRange = new RowRange(rowKey.getBytes(), true, rowKey.getBytes(), true);
        rowrangeList.add(rowRange);
    }

    FilterList fList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
    fList.addFilter(new KeyOnlyFilter());
    fList.addFilter(new FirstKeyOnlyFilter());
    fList.addFilter(new PageFilter(max));
    fList.addFilter(new MultiRowRangeFilter(rowrangeList));

    Scan s = new Scan();
    s.setFilter(fList);

    ResultScanner scanner = tbl.getScanner(s);
    for (Result row : scanner)
    {
        System.out.println("Got row: " + new String(row.getRow()));
    }
    scanner.close();
}

但这里有一些问题:

如果我们不指定max图形并省略在FilterList中设置PageFilter(max),这将会起作用。我们可以在客户端过滤结果,但是表中可能有数百万行带有Bob...行键前缀,因此我们希望在服务器端限制Scan的结果。

如果我们指定PageFilter(max),那么如果表的行数比前缀为Bob|1|max多,那么我们将不会返回任何前缀为Bob|2|等的行。

我们如何才能最好地做到这一点?同样,我们的目标是一次为多个范围执行一个Scan (为了改进当前对每个子键执行重复Scans的功能,这似乎效率很低)。理想情况下,这应该同时适用于HBase和Bigtable,但至少其中之一会有所帮助!

EN

Stack Overflow用户

发布于 2019-09-21 01:52:43

不幸的是,这个功能本身并不受支持。我最好的建议是并行发出行范围。这实际上会改善您的总体延迟,因为单个读取请求中的多个行范围是按顺序处理的。

由于每个RPC的开销,采用此路由将略微降低您的最大吞吐量。但是,如果每个范围内流回的行数超过几行,则工作将以响应处理为主,因此您应该看不到太大的差异。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51555824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档