【问题标题】:How does one read binary input files in mrjob?如何在 mrjob 中读取二进制输入文件?
【发布时间】:2014-05-20 00:13:03
【问题描述】:

我的 MapReduce 程序的输入是一组二进制文件。我希望能够通过 mrjob 阅读它们。经过一番研究,似乎我必须编写一个自定义的 hadoop 流媒体 jar。有没有更简单的方法?还是这样的罐子很容易买到?详情如下。

输入文件只是一个 8 字节整数序列。我希望一次使用 2 个整数调用我的映射器函数。

我首先想到可以转换成pickle二进制格式然后指定:

INPUT_PROTOCOL = mrjob.protocol.PickleProtocol.

但这给出了一个错误:无法解码输入。我也觉得 mrjob 只能使用 pickle ascii 格式(而不是二进制)。因为否则hadoop流将如何处理看起来像换行符的字节。 mrjob 源代码似乎证实了这一点。

另一个选项是编写一个自定义的 hadoop 流 jar。 mrjob 可以选择指定这样的 jar。但作为不熟悉 hadoop/Java 的人,我更喜欢基于 python 的解决方案。

【问题讨论】:

    标签: binaryfiles mrjob


    【解决方案1】:

    在进一步的研究中,我发现了一些有用的帖子,它们可能无法直接解决我的问题,但可以解决整体问题。

    基本上是search for "binary data" on mrjob mailing list。 (是的,这很明显;只需在此处添加,以防有人先发现此问题。)

    也许更重要的是,this is issue 715 on mrjob

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 2021-09-17
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      相关资源
      最近更新 更多