Я хочу сделать что-то действительно базовое, просто запустите кластер Spark через консоль EMR и запустите Spark script, который зависит от пакета Python (например, Arrow). Каков самый простой способ сделать это?
Как загрузочная установка модулей Python на Amazon EMR?
Ответ 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