【问题标题】:Read from Avro and Write to multiple HBase in Mapper在 Mapper 中从 Avro 读取并写入多个 HBase
【发布时间】:2015-02-04 13:40:03
【问题描述】:

我已使用MultiTableOutputFormat 并成功写入TableReducer 中的多个HBase 表。但是如何在 Mapper 唯一的工作中实现这一点?

我尝试使用TableMapper,但它只有<KEYOUT,VALUEOUT> 而没有<KEYIN,VALUEIN,KEYOUT,VALUEOUT>。所以我无法读取文本文件。

我的 Mapper 正在读取 Text/Avro 文件并在推送到 HBase 之前对其进行处理。这可能吗?

【问题讨论】:

    标签: hadoop hbase avro


    【解决方案1】:

    您可以在您实现的 Mapper 中打开一个 HBase 连接并自己编写 PUT 操作

    【讨论】:

    • HBase 连接创建是重量级操作。这是否可以在映射器之间共享 HBase 连接,以便可以重新利用连接实例?
    • 因为每个映射器都在自己的 JVM 中运行(并且只是偶尔在同一台服务器上)——那么答案是否定的
    • 每个映射器都运行在自己的JVM上是正确的。我想如果我序列化hbase连接对象并将其设置在驱动程序内的Configuration类中,然后在映射器的setup()方法中再次对其进行反序列化以获取原始连接对象,则可以完成。一个很好的例子显示在here
    • 连接不是可序列化的对象,因为它们实际上在特定 ips 和端口之间创建连接。您可以为每个映射器创建一次连接(在初始化时)
    • 好的.. 谢谢@Arnon Rotem-Gal-Oz
    猜你喜欢
    • 1970-01-01
    • 2019-06-28
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多