HBase Shell 几乎比 Restful 前缀过滤器端点快 100 倍

HBase Shell Almost 100x Faster Than Restful Endpoint For Prefix Filter

如果我 运行 在 HBase shell 上使用前缀过滤器进行扫描,无论我使用什么前缀,我都会在不到 1 秒的时间内收到响应。 (0 vs 9 或 "a" vs "z" 对响应速度没有影响)。

但是,当我从 Microsoft HBase 库(在 C# 中)进行相同的查询时,最多可能需要 90 秒才能得到答案。有趣的是,如果我选择一个更接近 0 的前缀,它会更快,我离 0 越远,花费的时间就越长。 ("a" 作为前缀过滤器比 "f" 更快)。

不确定如何确定 shell 与 restful 查询的不同之处,或者如何使 restful 查询的性能更高。

一些细节:

关于我应该寻找或尝试改进其余 api 请求的任何想法?

原来这不是问题。 运行 shell 上的命令与我想的 API 上的命令不同。

其余 API,我提供了两个过滤器,一个页面过滤器和一个前缀过滤器。

在 HBase 上 shell 我是 运行

scan 'beacon', {STARTROW => 'ff', FILTER => "PageFilter(25)"}

STARTROW 与前缀过滤器不同。它实际上是在做一些更像是设置完整的开始行键的事情,从而提高扫描性能,因为它不会遍历整个 table.

事实证明,这也是我在其余 API 电话中应该做的。除了前缀过滤器和页面过滤器之外,当我设置开始行和结束行时,它会按预期快速运行。

https://community.hortonworks.com/articles/55204/recommended-way-to-do-hbase-prefix-scan-through-hb.html

Should I use prefixfilter or rowkey range scan in HBase