Java 基于特定HFile作为根的HBase扫描

Java 基于特定HFile作为根的HBase扫描,java,mapreduce,hbase,hfile,Java,Mapreduce,Hbase,Hfile,是否存在具有以下行为的扫描/筛选API 给定时间范围,我希望扫描器包含超出范围的HFiles中的数据,用于范围内HFiles中包含的行键。 其思想是扫描所有HFiles的内存索引,但仅从磁盘获取范围内HFiles的行键的数据 例如,如果HFile1在范围内而HFile2在范围外,并且rowkey1在HFile1中有任何数据,我想从HFile2中获取rowkey1的所有列,就好像它在范围内一样。 另一方面,如果HFile2中包含rowkey2,但不包含在HFile1中,则索引扫描程序应直接跳到下一

是否存在具有以下行为的扫描/筛选API

给定时间范围,我希望扫描器包含超出范围的HFiles中的数据,用于范围内HFiles中包含的行键。 其思想是扫描所有HFiles的内存索引,但仅从磁盘获取范围内HFiles的行键的数据

例如,如果
HFile1
在范围内而
HFile2
在范围外,并且
rowkey1
HFile1
中有任何数据,我想从
HFile2
中获取
rowkey1
的所有列,就好像它在范围内一样。 另一方面,如果
HFile2
中包含
rowkey2
,但不包含在
HFile1
中,则索引扫描程序应直接跳到下一行键

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


非常感谢

如果这是使用案例

用例是加载修改过的整行(即使是在 一列),避免完全扫描或任何磁盘 冗余数据扫描

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


如果希望它更灵活,则应用
KeyOnlyFilter()
并获取所有行键。稍后,您可以基于行计数执行批处理
Get

谢谢你的回答
setTimeRange
将不起作用,因为它只获取修改过的列,而我需要整行。我们已经做了类似于您建议的批处理
Get
,这正是我尝试优化的过程:)