繁体   English   中英

如何在Hbase Scan中跳过行?

[英]How to skip rows in Hbase Scan?

我正在实现一个简单的分页,例如转到第1页,第2页,第3页,依此类推。

在HBase Book中,我读到有一个具有构造函数的PageFilter,该构造函数带有一个参数,该参数指示要返回的行数,但问题是如何跳转到例如第5页,直接跳过pageSize * currentPageNumber行? HBase书中给出的示例似乎是序列分页,即您可以直接转到第5页。

有没有一种方法可以跳过HBase中的行?

提前致谢。

PageFilter不提供任何偏移功能,它就像limit子句一样工作,当您有足够的数据时停止扫描操作。

重要的是要说HBase不知道一个表有多少行,您必须扫描整个表才能获得该计数。 仅此一项,就无法对数据进行分页(因为您不知道总页数或每行的偏移量)。 不要认为它有缺点,因为这在您写入大量数据时会产生巨大的影响。

话虽这么说,但对数百万(或数十亿)行的分页没有意义。 您应该以始终提供起点(行键)的方式设计表,以便扫描操作可以从此处开始读取。 您无需知道整个行键,开始行和停止行都可以只是前缀(即:如果您的数据自然按照8字节长的时间戳进行排序,则可以使用它来快进前几个小时,天,月...)。

如果您无法提供任何起点(即使是部分起点),那么一个可能对您有用的非常简单的解决方案是分批检索记录(即:1000个项目的批处理足以容纳50页,可以轻松地处理客户-侧)。 然后,当您到达该批次的最后一页时,只需将最后一项的行键用作下一个扫描操作的起点即可,该操作应检索另一批1000行,依此类推...。唯一的缺点是直接转到较高的页面会比较昂贵,因为您需要先加载以前的批次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM