java - 基于特定 HFile(s) 作为根的 HBase 扫描

标签 java mapreduce hbase hfile

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

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

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

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

非常感谢

最佳答案

如果这是用例,

The use case is to load entire rows that were modified (even on just one column) during the last X hours, avoiding full scan or any disk scan of redundant data

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

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

关于java - 基于特定 HFile(s) 作为根的 HBase 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685606/

相关文章:

java - SimpleStringProperty 和 StringProperty 的区别

java - 是否可以限制 MapReduce 作业访问远程数据?

scala - Spark MapReduce 中的意外结果

java - HBase - Java 中的 java.lang.NoClassDefFoundError

hadoop - Hbase 0.96 与 Mahout 0.9 集成

java - 前置摄像头连接摄像头服务失败?

java - 升级 spring 集成

hadoop - 如果输入数据源在 HDFS 中不断增加,MapReduce 作业会发生什么情况?

performance - 调整使用底层 HBase 表的 Hive 查询

java - Arrays.copyOfRange(byte[], int, int) 奇怪行为背后的逻辑是什么?