当前位置: 代码迷 >> java >> HBase Scan基于特定的HFile作为根
  详细解决方案

HBase Scan基于特定的HFile作为根

热度:95   发布时间:2023-08-02 10:21:28.0

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

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

例如,如果HFile1在范围和HFile2超出范围,和rowkey1在任何数据HFile1 ,我想获得的所有列rowkey1HFile2为好,就好像它是在范围内。 在另一方面,如果rowkey2包括在HFile2但不是在HFile1 ,索引扫描仪应该只是跳到下一行的关键。

用例是在最后X小时内加载已修改的整行 (即使只在一列上),从而避免对冗余数据进行全面扫描或任何磁盘扫描。 这将集成到Spark / MR应用程序中,可能基于TableSnapshotInputFormat,所以我想我可以为HRegion,HStore或其他任何东西发送一些自定义代码,如果有的话。

非常感谢

如果这是用例,

用例是在最后X小时内加载已修改的整行(即使只在一列上),避免了冗余数据的全扫描或任何磁盘扫描

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

如果您希望它更灵活,则应用KeyOnlyFilter()并获取所有rowkeys。 稍后您可以根据行数进行批量Get

  相关解决方案