如何有效地扫描HBase行

Pan*_*nks 10 hbase mapreduce

我需要编写一个MapReduce Job来获取给定Date Range中的所有行(比如说最后一个月).如果My Row Key以Date开头,那将是一场轻松的尝试.但我频繁的Hbase查询是关键的起始值.

我行重点正是A | B | C | 20120121 | d.A/B/C与日期(以YearMonthDay格式)的组合形成唯一的行ID.

我的Hbase表可能有几百万行.我的Mapper是否应该读取所​​有表格并过滤掉每一行,如果它落在给定的日期范围内,或者扫描/过滤器可以帮助处理这种情况?

有人可以建议(或代码片段)以有效的方式处理这种情况吗?

谢谢-Panks

obh*_*obh 10

带有RegEx过滤器的RowFilter可以工作,但不是最佳解决方案.或者,您可以尝试使用二级索引.

另一个解决方案是尝试FuzzyRowFIlter.FuzzyRowFilter使用一种快进,因此在整个扫描过程中跳过许多行,因此比RowFilter Scan更快.你可以在这里阅读更多相关信息.

或者,BloomFilters也可能会有所帮助,具体取决于您的架构.如果您的数据很大,您应该对二级索引和布隆过滤器进行比较分析.


Chr*_*ain 5

您可以将RowFilterRegexStringComparator一起使用.您需要提供适当过滤日期的RegEx. 此页面包含一个示例,其中包括为MapReduce扫描程序设置过滤器.