如果在hbase shell上运行带有前缀筛选器的扫描,则无论使用什么前缀,都会在不到1秒的时间内得到响应(0对9或“a”对“z”在响应速度上没有区别)。
但是,当我从MicrosoftHBase库(c#)中进行相同的查询时,可能需要90秒才能得到答案。有趣的是,如果我选择一个更接近0的前缀,它会更快,从0移得越远,所需时间就越长。()作为前缀过滤器,“a”比“f”快)。
不确定如何确定shell与restful查询的不同之处,或者如何使restful查询更高效。
一些细节:
这张表中有2000多万条记录
行键设计为[guid]\uu[inverse timestamp],例如a6fc9620-5ff0-41c0-9ed9-660bc3fbb65c\u 9223370501253811889
关于我应该寻找什么或尝试改进restapi请求,有什么想法吗?
1条答案
按热度按时间lkaoscv71#
原来这不是问题。我没有像我想的那样在shell和restapi上运行相同的命令。
在restapi上,我给出了两个过滤器,一个页面过滤器和一个前缀过滤器。
在我运行的hbase shell上
startrow与前缀过滤器不同。它实际上做的事情更像是设置一个完整的起始行键,从而使扫描性能更好,因为它不会遍历整个表。
原来,这也是我在restapi调用中应该做的。当我除了设置前缀过滤器和页面过滤器外,还设置了起始行和结束行时,它会像预期的那样快速工作。
https://community.hortonworks.com/articles/55204/recommended-way-to-do-hbase-prefix-scan-through-hb.html
我应该在hbase中使用prefixfilter还是rowkey范围扫描