2013-07-09 2 views
6

mrjob/boto 모듈을 통해 amazon의 EMR로 코드를 전송합니다. 파이썬 패키지의 소스를 다운로드하고 mrjob.config 파일의 "python_archives"필드에 tarball로 보내야합니다. (예 : numpy, boto 등) 외부 파이썬 종속성이 있습니다.EMR의 Python 종속성 관리

이것은 의존성 관리가 내가 원하는 것보다 더 지저분 해지고, 내 dependency로 emr 인스턴스를 부트 스트랩하기 위해 내 virtualenv 설정에 사용하는 동일한 requirements.txt 파일을 어떻게 든 사용할 수 있는지 궁금해하고 있습니다. EMR 인스턴스에 virtualenv를 설정하고 다음과 같은 작업을 수행 할 수 있습니까?

pip install -r requirements.txt 

으로 로컬로 할 수 있습니까?

답변

3

이 작업을 수행하는 한 가지 방법은 bootstrap action입니다. 이를 사용하여 쉘 스크립트를 실행할 수 있습니다.

이 같은 않는 설정 파이썬 파일이있는 경우 :

0

그래서 requirements.txt을 업로드 할 필요없이 그냥 부트 스트랩 작업으로이 작업을 실행할 수있는 그런

requirements = open("requirements.txt", "r") 
shell_script = open("pip.sh", "w+") 
shell_script.write("sudo apt-get install python-pip\n") 
for line in requirements: 
    shell_script.write("sudo pip install -I " + line) 

당신이 ' mrjob을 사용하여, 필자는 삐삐 호출을 나의 .mrjob.conf 파일에 바로 부트 스트랩 작업으로 넣는 것으로 성공을 거두었습니다. requirements.txt 파일을 사용하는 것만 큼 우아하지는 않습니다 (모든 작업에 대해 동일한 모듈을로드합니다). 예를 들어, 내 conf의 파일은 다음과 같습니다

runners: 
    emr: 
    aws_access_key_id: xx 
    aws_secret_access_key: xx 
    ec2_key_pair: xx 
    ec2_key_pair_file: xx 
    ssh_tunnel_to_job_tracker: true 
    bootstrap_cmds: 
     - sudo apt-get install -y python-pip 
     - sudo pip install pgnparser 
     - sudo pip install boto 

및 내 mrjob 스크립트에서 사용할 수 있도록 그것은 pgnparserboto 모듈을로드합니다.