在向mrjob映射器发送输入之前,如何过滤s3文件



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

任何想法如何过滤桶s3由文件名从MrJob?我找到了mapper_pre_filter!方法,但它只逐行过滤输入。

这里有几种可能性。

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

  • 或者,你可以传递你想要的文件作为数据;

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

if __name__ == '__main__':
    Arbitrary_code_function.run()
    MRJOB_Jobname.run()

相关内容

  • 没有找到相关文章