【问题标题】:Hadoop streaming with Python: Keeping track of line numbers使用 Python 进行 Hadoop 流式处理:跟踪行号
【发布时间】:2013-11-30 17:36:45
【问题描述】:

我正在尝试做一个简单的任务:我需要使用带有 Python 的 Hadoop 流将文本文件转换为大写。

我想通过使用TextInputFormat 来实现,它将文件位置键和文本值传递给映射器。问题在于 Hadoop 流式处理 automatically discards the file position keys,这是保持文档顺序所必需的。

如何将输入的文件位置信息保留到映射器?或者有没有更好的方法使用 Hadoop 流将文档转换为大写?

谢谢。

【问题讨论】:

  • 文件有多大 - 您需要为此使用多个映射器吗?

标签: python hadoop position streaming line-numbers


【解决方案1】:

如果您的工作只是将单个文件大写,那么 Hadoop 不会真正为您提供将文件流式传输到单个机器、执行大写然后将内容写回 HDFS 的任何东西。即使有一个巨大的文件(比如 1TB),您仍然需要将所有内容都放到一个 reducer 中,这样当它写回 HDFS 时,它会存储在一个连续的文件中。

在这种情况下,我会将您的流式传输作业配置为每个文件有一个映射器(将拆分的最小和最大大小设置为比文件本身更大的东西),然后运行仅映射作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2014-05-08
    相关资源
    最近更新 更多