java - 基于特定 HFile(s) 作为根的 HBase 扫描
问题描述
是否有任何具有以下行为的扫描/过滤 API?
给定时间范围,我希望扫描仪包含 HFiles 超出范围的数据,用于 HFiles 中包含的行键在范围内。这个想法是扫描所有 HFile 的内存索引,但只从磁盘中获取范围内 HFile 中的行键的数据。
例如,如果HFile1
在范围内并且HFile2
超出范围,并且rowkey1
有任何数据HFile1
,我也想获取rowkey1
from的所有列HFile2
,就好像它在范围内一样。另一方面,如果rowkey2
包含在HFile2
但不包含在HFile1
,索引扫描器应该只是跳到下一个行键。
用例是加载在过去 X 小时内修改过的整行(即使仅在一列上),避免完全扫描或冗余数据的任何磁盘扫描。这将被集成到 Spark/MR 应用程序中,可能基于 TableSnapshotInputFormat,所以我想我可以为 HRegion、HStore 或其他任何东西提供一些自定义代码,如果涉及到这个。
非常感谢
解决方案
如果这是用例,
用例是加载在过去 X 小时内修改过的整行(甚至仅在一列上),避免完全扫描或冗余数据的任何磁盘扫描
为什么带有时间戳范围的扫描不起作用?HBase JAVA APIorg.apache.hadoop.hbase.client.Scan.setTimeRange(long, long)
将时间范围作为输入,它仅获取在此时间范围内修改的行。
如果您希望它更灵活,请应用 aKeyOnlyFilter()
并获取所有行键。稍后您可以Get
根据行数进行批处理。
推荐阅读
- reactjs - 行动/调度不更新商店
- linux - 使用 MDEV-17458 将 galera-cluster 更新到 10.3.15
- firebase - 如何在 Vue.js 应用程序中配置 firebase cdn / 缓存?
- python-3.x - 使用 python psycopg2 在 PostgreSQL 数据库中插入嵌套 json 数据(某些键不存在)时出现问题
- excel - VBA 在 Outlook 2016 中发送电子邮件效率变差了?
- java - 从集合中提取对象
基于地图输入 - c# - 在 library(.dll) 项目中使用 WCF 时放置服务参考是一种好习惯吗?
- html - 我在用于滚动文本的“数据文本”和“数据文本”之间存在语法问题
- javascript - 如何使用 jQuery 将 url 的 #-part 保留在 load() 上?
- php - 数据在数据库中保存为数组 - 使用 laravel