mrjob - 源目录的自动tar

时间:2013-12-18 16:20:50

标签: python amazon emr mrjob

我使用mrjob创建了一个Amazon EMR作业。我的mapreduce作业继承自一个公共帮助器类,以便我解析apache日志,我正在解析更容易,我继承的类在几个mapreduce作业之间共享,所以这是我的文件结构:

__init__.py
count_ip.py (mapreduce job)
common/apache.py   (base class count_ip.py inherits from)

我想从我的本地计算机自动tar我的完整src目录,并让mrjob将其上传到Amazon EMR。现在我有一个带有公共目录的tar文件,common.tar.gz。这个tar我已经添加到mrjob.conf中的python包中,它工作正常,我想做的是自动创建common.tar.gz,是否有任何支持mrjob来处理这个,如果没有,我有什么选择?

1 个答案:

答案 0 :(得分:0)

我不是一个超级mrjobber,在过去的几个月里只做了它,但我使用python的标准tarfile包来做这件事。

def tar_and_gzip(roots, filename):
    """
    Tars all files starting from roots provided and gzips result
    """
    with tarfile.open(filename, 'w:gz') as tarball:
        for root in roots:
            tarball.add(root, arcname=basename(root))

您可以在运行作业之前单独运行此程序,也可以编写同时执行这两项操作的脚本。