【问题标题】:MapReduce read input from RedisMapReduce 从 Redis 读取输入
【发布时间】:2013-07-29 20:30:09
【问题描述】:

我想编写一个执行 MapReduce 作业的 Java 程序(例如字数统计)。输入来自 Redis。如何编写 Map 类以从 Redis 中一一检索并在 Map 类中执行一些过程,就像我之前从 HDFS 读取一样?

【问题讨论】:

    标签: java hadoop mapreduce redis


    【解决方案1】:

    没有允许我们这样做的 OOTB 功能。但您可能会发现 Jedis 之类的内容很有帮助。 Jedis 是一个 Java 客户端,您可以使用它从 Redis 读取/写入数据。示例见this

    如果您没有与 Java 强耦合,您可能还会发现 R3 很有用。 R3 是一个使用 Redis 后端用 Python 编写的 map reduce 引擎。

    HTH

    【讨论】:

    • 嗯...看起来很复杂。有没有一种方法可以简单地从 Redis 中读取一个集合(使用 Jedis)并解析为 Mapper 类作为值?
    • 我不知道。您可能可以再等一些时间让专家发表评论,因为我不太喜欢 Redis 的东西。
    • Redisson 可以轻松地在 Redis 数据上运行 Map Reduce。
    【解决方案2】:

    显然,您需要自定义您的 InputFormat。 请阅读this 教程,了解如何编写自己的自定义 InputFormat 和 RecordReader。

    【讨论】:

      【解决方案3】:

      将您的密钥放在 HDFS 中。在map()中,只需根据输入key从redis中查询即可。

      【讨论】:

      • 这样做会失去将数据存储在内存中的优势。
      【解决方案4】:

      试试Redisson,它是一个基于 Redis 的 Java 内存数据网格。它允许对存储在 Redis 中的数据执行 Map Reduce。

      更多文档here

      【讨论】:

        猜你喜欢
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 2016-09-28
        • 2011-03-05
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        相关资源
        最近更新 更多