【发布时间】:2014-07-01 21:08:49
【问题描述】:
我正在尝试编写一个解析 CSV 文件的 MapReduce 作业,将数据存储在 HBase 中并一次性执行 reduce 功能。理想情况下我会喜欢
- Mapper 输出好的记录到 HBase 表 GOOD
- Mapper 将不良记录输出到 HBase 表 BAD
- Mapper 使用 key 将所有好的数据发送到 reducer
- 还想更新第三个表,表明存在新数据。该表将包含有关数据和日期的基本信息。每个 CSV 文件很可能有一或两条记录。
我知道如何使用 HBase MultiTableOutputFormat 执行 1 和 2,但不确定如何执行 3 和 4。
非常感谢任何有关如何执行此操作的指示。
我对如何做到这一点有一些想法:
对于 1 和 2,我将 ImmutableBytesWriteable 作为键,MultiTableOutputFormat 负责从 Mapper 存储。但是对于 3,我希望键是 Text。
对于#4,我应该在 Mapper 中这样做吗
- 扫描第三个 HBase 表以查找条目,如果没有则填充,否则跳过。我不喜欢这样,因为感觉效率很低。
- 或者我应该在 Mapper 中维护一个 List 并在 Mapper 清理方法中写入 HBase?
- 有没有更好的方法来做到这一点?
【问题讨论】:
标签: java hadoop mapreduce hbase multiple-tables