2013-07-09 34 views
6

amazon EMR'lerine mrjob/boto modülleri üzerinden kod gönderiyorum. Bazı harici python bağımlılıkları (örneğin, numpy, boto, vb) var ve şu anda python paketlerinin kaynağını indirmek ve mrjob.config dosyasının "python_archives" alanında bir tarball olarak göndermek zorunda.Python Bağımlılık Yönetimi EMR üzerinde

Bu, bağımlılık yönetimi ileticisini istediğimden çok yapar ve bir şekilde, emr örneğimi bağımlılığımla önyüklemek için virtualenv kurulumumu kullanmak için kullandığım aynı gereksinimleri.txt dosyasını kullanıp kullanamayacağımı merak ediyorum. Virtualenv'leri EMR örneklerinde kurmak ve yerel olarak

pip install -r requirements.txt 

gibi bir şey yapmak mümkün mü? Bu, bir bootstrap action kullanarak gerçekleştirmenin bir yoludur.

cevap

3

Kabuk betiklerini çalıştırmak için bunları kullanabilirsiniz.

Eğer böyle bir şey yapar bir kurulum piton dosyası varsa:

0

Yani requirements.txt yüklemenize gerek kalmadan sadece önyükleme eylem olarak bu çalıştırabilirsiniz Sonra

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) 

eğer' mrjob kullanarak, sadece pip çağrıları doğrudan bir bootstrap eylem olarak benim .mrjob.conf dosyasına koyarak bazı başarılar yaşadım. Required.txt dosyası kullanmak kadar zarif değildir (tüm işleriniz için aynı modülleri yükler). Örneğin, benim conf dosyası gibi görünür:

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 

ve bana mrjob komut kullanmak için bunu pgnparser ve boto modüllerini yükleyecektir.