我使用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来处理这个,如果没有,我有什么选择?
答案 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))
您可以在运行作业之前单独运行此程序,也可以编写同时执行这两项操作的脚本。