非常大的 Bigtable table 的最有效 RowScan
Most efficient RowScan of very large Bigtable table
我正在寻找使用最新的 JAVA API 对非常大的 Bigtable 表执行行扫描的最快方法。我只需要根据部分行值进行扫描(不需要 column/column 系列信息)。行值分布良好,Bigtable 的词典排序非常适合此用例。
这些年来,关于这个主题的答案有很多,但其中一些对于旧版本来说已经过时,其中一些似乎是 HBase 特定的,或者 shell 特定的。我特别需要 Cloud Bigtable 和 JAVA API.
的最新版本
目前,根据我自己的测试,我认为这是最好的方法:
Scan s = new Scan();
s.setStartRow(startRowKey); // this can also be passed to constructor
s.setStopRow(stopRowKey); // this can also be passed to constructor
s.setRowPrefixFilter(key.getBytes());
s.setFilter(new PageFilter(MaxResult));
s.setFilter(new KeyOnlyFilter());
但我的问题是:
1:有什么我不知道应该做的事情来提高速度吗?
2:有没有比PageFilter()
更好的方法来限制结果? IE。我怎么说 "return max 25 rows"
3:scan.setFilter(new PrefixFilter(rowKey))
和scan.setRowPrefixFilter(rowKey)
有什么区别
4:扫描参数放startRow
的好处很清楚,但是放[=16有什么好处(或坏处)吗=] 参数也是如此?特别是如果您提供 PageSize()
或其他限制措施
感谢任何反馈!
您的过滤器似乎相互干扰(KeyOnlyFilter
将覆盖 PageFilter
,您应该将它们包装在 MUST_PASS_ALL
FilterList
.
- 除了我上面提到的错误,我想不出任何其他优化。
- 我不相信 HBase API 提供了另一种指定行限制的方法。
- 你的情况不多。使用
PrefilterFilter
的主要原因是能够将它与 FilterList
. 中的其他过滤器链接在一起
- 加一个
endRow
肯定没有坏处,但同时我觉得也没有太大的收获。
我正在寻找使用最新的 JAVA API 对非常大的 Bigtable 表执行行扫描的最快方法。我只需要根据部分行值进行扫描(不需要 column/column 系列信息)。行值分布良好,Bigtable 的词典排序非常适合此用例。
这些年来,关于这个主题的答案有很多,但其中一些对于旧版本来说已经过时,其中一些似乎是 HBase 特定的,或者 shell 特定的。我特别需要 Cloud Bigtable 和 JAVA API.
的最新版本目前,根据我自己的测试,我认为这是最好的方法:
Scan s = new Scan();
s.setStartRow(startRowKey); // this can also be passed to constructor
s.setStopRow(stopRowKey); // this can also be passed to constructor
s.setRowPrefixFilter(key.getBytes());
s.setFilter(new PageFilter(MaxResult));
s.setFilter(new KeyOnlyFilter());
但我的问题是:
1:有什么我不知道应该做的事情来提高速度吗?
2:有没有比PageFilter()
更好的方法来限制结果? IE。我怎么说 "return max 25 rows"
3:scan.setFilter(new PrefixFilter(rowKey))
和scan.setRowPrefixFilter(rowKey)
有什么区别
4:扫描参数放startRow
的好处很清楚,但是放[=16有什么好处(或坏处)吗=] 参数也是如此?特别是如果您提供 PageSize()
或其他限制措施
感谢任何反馈!
您的过滤器似乎相互干扰(KeyOnlyFilter
将覆盖 PageFilter
,您应该将它们包装在 MUST_PASS_ALL
FilterList
.
- 除了我上面提到的错误,我想不出任何其他优化。
- 我不相信 HBase API 提供了另一种指定行限制的方法。
- 你的情况不多。使用
PrefilterFilter
的主要原因是能够将它与FilterList
. 中的其他过滤器链接在一起
- 加一个
endRow
肯定没有坏处,但同时我觉得也没有太大的收获。