在将输入发送到mrjob映射器之前如何过滤s3文件?

时间:2014-06-11 23:25:37

标签: python amazon-s3 mapreduce emr mrjob

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

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

1 个答案:

答案 0 :(得分: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()