2015-07-20 2 views

ответ

22

Самый простой способ - создать скрипт bash, содержащий ваши команды установки, скопировать его на S3 и установить действие бутстрапа из консоли, чтобы указать на ваш скрипт.

Вот пример, я использую в производстве:

s3: //mybucket/bootstrap/install_python_modules.sh

#!/bin/bash -xe 

# Non-standard and non-Amazon Machine Image Python modules: 
sudo pip install -U \ 
    awscli   \ 
    boto    \ 
    ciso8601   \ 
    ujson    \ 
    workalendar 

sudo yum install -y python-psycopg2 
+0

это установит пакеты на одном из узлов в кластере EMR. Как я могу убедиться, что пакет установлен на всех узлах? – Aliza

+1

Это устанавливает пакеты на всех узлах – noli

4

Короче говоря, есть два способа установить пакеты с помощью pip, в зависимости от платформы. Во-первых, вы устанавливаете все, что вам нужно, и затем можете запустить свой шаг Spark. Проще всего использовать ЭМИ-4.0.0 и «командной runner.jar»:

from boto.emr.step import JarStep 
>>> pip_step=JarStep(name="Command Runner", 
...    jar="command-runner.jar", 
...    action_on_failure="CONTINUE", 
...    step_args=['sudo','pip','install','arrow'] 
...) 
>>> spark_step=JarStep(name="Spark with Command Runner", 
...     jar="command-runner.jar", 
...     step_args=["spark-submit","/usr/lib/spark/examples/src/main/python/pi.py"] 
...     action_on_failure="CONTINUE" 
) 
>>> step_list=conn.add_jobflow_steps(emr.jobflowid, [pip_step,spark_step]) 

На 2.x и 3.x, вы используете скрипт-runner.jar аналогичным образом, за исключением, что вы для указания полного URI для scriptrunner.

EDIT: Извините, я не видел, что вы хотели сделать это через консоль. Вы также можете добавить те же шаги в консоли. Первым шагом будет JAR клиента с теми же аргументами, что и выше. Второй шаг - искровой шаг. Надеюсь это поможет!

+0

откуда 'conn' родом из –