问题描述
是否有任何具有以下行为的扫描/过滤器API?
给定时间范围,我希望扫描仪包含来自HFiles的数据超出范围,包括在HFiles中的行键在范围内。 我们的想法是扫描所有HFile的内存索引,但只从磁盘中获取来自HFile的rowkeys的数据。
例如,如果HFile1
在范围和HFile2
超出范围,和rowkey1
在任何数据HFile1
,我想获得的所有列rowkey1
从HFile2
为好,就好像它是在范围内。
在另一方面,如果rowkey2
包括在HFile2
但不是在HFile1
,索引扫描仪应该只是跳到下一行的关键。
用例是在最后X小时内加载已修改的整行 (即使只在一列上),从而避免对冗余数据进行全面扫描或任何磁盘扫描。 这将集成到Spark / MR应用程序中,可能基于TableSnapshotInputFormat,所以我想我可以为HRegion,HStore或其他任何东西发送一些自定义代码,如果有的话。
非常感谢
1楼
如果这是用例,
用例是在最后X小时内加载已修改的整行(即使只在一列上),避免了冗余数据的全扫描或任何磁盘扫描
为什么带时间戳范围的扫描不起作用?
HBase JAVA API org.apache.hadoop.hbase.client.Scan.setTimeRange(long, long)
将时间范围作为输入,并且仅获取在此时间范围内修改的行。
如果您希望它更灵活,则应用KeyOnlyFilter()
并获取所有rowkeys。
稍后您可以根据行数进行批量Get
。