web-dev-qa-db-ja.com

方法bootstrap= Python Amazon EMRのモジュールのインストール?

本当に基本的なことをしたいので、EMRコンソールからSparkクラスターを起動し、Sparkパッケージに依存するPythonスクリプトを実行します(たとえば、 、 矢印 )。これを行う最も簡単な方法は何ですか?

29
Evan Zamir

最も簡単な方法は、インストールコマンドを含むbashスクリプトを作成し、それをS3にコピーし、コンソールからbootstrapアクションを設定してスクリプトを指すようにすることです。

これが私が本番で使用している例です。

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
36
noli

つまり、プラットフォームに応じて、pipでパッケージをインストールする2つの方法があります。まず、必要なものをインストールしてから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を同様の方法で使用しますが、 scriptrunner に完全なURIを指定する必要があります。

編集:申し訳ありませんが、私はあなたがコンソールを介してこれをやりたいとは思わなかった。コンソールにも同じ手順を追加できます。最初のステップは、上記と同じ引数を持つカスタマーJARです。 2番目のステップはsparkステップです。これがお役に立てば幸いです!

4
Craig F

Python 2(EMRのデフォルト))またはPython 3を使用しているかどうかに応じて、pip installコマンドは異なるはずです。 noli's answer 、シェルスクリプトを作成し、S3のバケットにアップロードして、 ブートストラップアクション として使用する必要があります。

Python 2(Jupyterの場合:pysparkカーネルのデフォルトとして使用)):

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

Python 3(Jupyterの場合:Python 3 andpyspark3kernel)のデフォルトとして使用):

#!/bin/bash -xe
Sudo pip-3.4 install your_package
3
Jonathan Taws