是否存在具有以下行为的Scan / Filter API?
鉴于时间范围,我希望扫描仪将HFile中的数据包含在范围之外,以用于HFile中包含的行键。 这个想法是扫描所有HFile的内存索引,但是仅从磁盘中获取范围内HFile的行键的数据。
例如,如果HFile1
在范围内并且HFile2
在范围之外,并且rowkey1
在HFile1
中有任何数据,我想获取也来自rowkey1
的{{1}},就好像它在范围内一样。
另一方面,如果HFile2
中包含rowkey2
,但HFile2
中未包含HFile1
,则索引扫描器应仅跳至下一行键。
用例是加载最近X个小时内修改过的整行(即使是仅一列),以避免完全扫描或对冗余数据进行任何磁盘扫描。 这可能会基于TableSnapshotInputFormat集成到Spark / MR应用程序中,所以我想我可以为HRegion,HStore或其他任何东西提供一些自定义代码。
非常感谢
答案 0 :(得分:2)
如果是用例,
用例是加载已修改的整个行(即使只是 一列)在最近的X个小时内,避免进行全面扫描或任何磁盘 扫描冗余数据
为什么使用时间戳扫描范围不起作用? HBase JAVA API org.apache.hadoop.hbase.client.Scan.setTimeRange(long, long)
以一个时间范围作为输入,并获取仅在该时间范围内修改的行。
如果您希望它更加灵活,请应用KeyOnlyFilter()
并获取所有行键。稍后,您可以根据行数进行批处理Get
。