1

我正在尝试 MapReduce 日志,并且我想在 EMR 中处理它们之前按文件名过滤存储桶中的所有日志。另外,有些文件是 tar 目录,我希望 mrjob 解压缩它,然后过滤其中的文件以仅解析相关文件。

知道如何通过来自MrJob的文件名过滤存储桶 s3吗?我找到了mapper_pre_filter!方法,但它只逐行过滤输入。

4

1 回答 1

1

这里有几种可能性。

  • 在 MRjob 中运行作业时,可以在命令行中指定要输入的文件。如果您只想运行 .json 文件,您可以通过指定.json 来实现,或者如果您想运行以 Logs6-24-14 开始并以 .txt 结尾的所有内容,您可以指定 Logs6-24-14 .txt

  • 或者,您可以将所需的文件作为数据传递;这涉及到 unix 管道,并且可以非常强大。

  • 最后,可能是最灵活的,您可以在您的 MRjob 文件中编写 Python 代码,该代码在实际作业之前运行,该作业对数据进行预处理。你几乎可以用这种方式做任何事情。它将进入这里的代码:

if __name__ == '__main__':
    Arbitrary_code_function.run()
    MRJOB_Jobname.run()
于 2014-06-24T20:09:51.643 回答