5

是否有任何具有以下行为的扫描/过滤 API?

给定时间范围,我希望扫描仪包含 HFiles 超出范围的数据,用于 HFiles 中包含的行键在范围内。这个想法是扫描所有 HFile 的内存索引,但只从磁盘中获取范围内 HFile 中的行键的数据。

例如,如果HFile1在范围内并且HFile2超出范围,并且rowkey1有任何数据HFile1,我也想获取rowkey1from的所有列HFile2,就好像它在范围内一样。另一方面,如果rowkey2包含在HFile2但不包含在HFile1,索引扫描器应该只是跳到下一个行键。

用例是加载在过去 X 小时内修改过的整行(即使仅在一列上),避免完全扫描或冗余数据的任何磁盘扫描。这将被集成到 Spark/MR 应用程序中,可能基于 TableSnapshotInputFormat,所以我想我可以为 HRegion、HStore 或其他任何东西提供一些自定义代码,如果涉及到这个。

非常感谢

4

1 回答 1

2

如果这是用例,

用例是加载在过去 X 小时内修改过的整行(甚至仅在一列上),避免完全扫描或冗余数据的任何磁盘扫描

为什么带有时间戳范围的扫描不起作用?HBase JAVA APIorg.apache.hadoop.hbase.client.Scan.setTimeRange(long, long)将时间范围作为输入,它仅获取在此时间范围内修改的行。

如果您希望它更灵活,请应用 aKeyOnlyFilter()并获取所有行键。稍后您可以Get根据行数进行批处理。

于 2019-02-27T08:42:52.370 回答