【问题标题】:How do you filter s3 files before sending input to mrjob mapper?在将输入发送到 mrjob 映射器之前如何过滤 s3 文件?
【发布时间】:2014-08-02 04:14:29
【问题描述】:

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

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

【问题讨论】:

  • 我不确定是否过滤文件,但您可以使用s3distcp 作业过滤和移动特定存储桶中的所需文件。

标签: python amazon-s3 mapreduce emr mrjob


【解决方案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()

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 2013-05-11
    • 2012-08-28
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2019-07-14
    • 2021-09-18
    相关资源
    最近更新 更多