gpt4 book ai didi

java - HBase多表扫描作业

转载 作者:可可西里 更新时间:2023-11-01 14:22:10 29 4
gpt4 key购买 nike

我正在查看以下场景。我每天发送一个数据文件。我将其添加到 HBase 中,名称为 file-yyyyMMdd 格式。所以在一段时间内我有很多数据库,例如

tempdb-20121220
tempdb-20121221
tempdb-20121222
tempdb-20121223
tempdb-20121224
tempdb-20121225

现在我想要做的是针对特定日期范围获取列表(如果表与该范围匹配),以便我可以创建索引。我正在使用 hbase-0.90.6

就我的研究而言,TableMapReduceUtil.initTableMapperJob 只需要 1 个表名。

TableMapReduceUtil.initTableMapperJob(
tableName, // input HBase table name
scan, // Scan instance to control CF and attribute selection
HBaseIndexerMapper.class, // mapper
null, // mapper output key
null, // mapper output value
job
);

我已经能够获取表列表并在循环中运行它,但我的想法是我可以遍历所有表,扫描它(或其他东西)以便最终我可以获得合并/组合结果用于索引目的。

实现此目标的任何方向都将是非常有用的。

最佳答案

好的,请检查 HBase 0.94.6 来源(看起来它们最适合您)。在那里你会发现MultiTableInputFormat class (按照链接查看 JavaDoc,包括示例)它可以满足您的需要。就在几天前,我有将此类添加到基于 HBase 0.94.2(实际上是 CDH 4.2.1)的项目的经验。成功。

这似乎以非常有效的方式完全满足您的需求。这里唯一的问题是您将有一个映射器处理所有数据。为了区分表格,您可能需要从 0.94.6 中获取 TableSplit 类,将其重命名为略有不同,并进行移植以不破坏您的环境。请检查 TableMapReduceUtil 中的差异 - 您将需要手动配置扫描,以便输入格式能够理解它们的配置。

还可以考虑简单地移动到 HBase 0.94.6 - 更简单的方法我无法遵循它。我花了大约 12 个工作小时来了解这里的问题/调查解决方案/了解我的 CDH 4.2.1 问题/移植所有内容。对我来说,好消息是 Cloudera 打算在 CDH 4.3.0 中迁移到 0.94.6。

更新 1:CDH 4.3.0 可用,它包括 HBase 0.94.6 和所有必需的基础设施。

更新 2:我转向其他解决方案 - 自定义输入格式,它组合了几个 HBase 表,按键混合了它们的行。碰巧非常有用,尤其是在适当的按键设计下。您可以在单个映射器中获得整个聚合。我正在考虑将这段代码发布到 github 上。

关于java - HBase多表扫描作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077766/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com