Подтвердить что ты не робот

Как загрузочная установка модулей Python на Amazon EMR?

Я хочу сделать что-то действительно базовое, просто запустите кластер Spark через консоль EMR и запустите Spark script, который зависит от пакета Python (например, Arrow). Каков самый простой способ сделать это?

4b9b3361

Ответ 1

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

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

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

Ответ 2

Короче говоря, есть два способа установить пакеты с помощью pip, в зависимости от платформы. Во-первых, вы устанавливаете все, что вам нужно, и затем можете запустить свой шаг Spark. Проще всего использовать emr-4.0.0 и "command-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 вы используете script -runner.jar аналогичным образом, за исключением того, что вы должны указать полный URI для scriptrunner.

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

Ответ 3

В зависимости от того, используете ли вы Python 2 (по умолчанию в EMR) или Python 3, команда установки pip должна отличаться. Как рекомендовано в ответе noli, вы должны создать сценарий оболочки, загрузить его в ведро в S3 и использовать его как действие Bootstrap.

Для Python 2 (в Jupyter: используется по умолчанию для ядра pyspark):

#!/bin/bash -xe
sudo pip install your_package

Для Python 3 (в Jupyter: используется по умолчанию для ядра Python 3 и pyspark3):

#!/bin/bash -xe
sudo pip-3.4 install your_package