0

我使用 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来处理这个,如果没有,我有什么选择?

4

1 回答 1

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))

您可以在运行作业之前单独运行它,也可以编写一个同时执行这两种操作的脚本。

于 2014-01-13T19:54:28.097 回答