Eva*_*mir 33 python amazon-web-services emr apache-spark
我想做一些非常基本的事情,只需通过EMR控制台启动一个Spark集群,然后运行依赖于Python包的Spark脚本(例如,Arrow).这样做最直接的方法是什么?
nol*_*oli 41
最直接的方法是创建一个包含安装命令的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
Run Code Online (Sandbox Code Playgroud)
根据您使用的是 Python 2(EMR 中的默认设置)还是 Python 3,pip install 命令应该有所不同。按照noli 的回答中的建议,您应该创建一个 shell 脚本,将其上传到 S3 中的存储桶,并将其用作Bootstrap 操作。
对于 Python 2(在 Jupyter 中:用作 pyspark 内核的默认值):
#!/bin/bash -xe
sudo pip install your_package
Run Code Online (Sandbox Code Playgroud)
对于 Python 3(在 Jupyter 中:用作 Python 3 和pyspark3内核的默认值):
#!/bin/bash -xe
sudo pip-3.4 install your_package
Run Code Online (Sandbox Code Playgroud)
简而言之,根据平台的不同,有两种方法可以通过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])
Run Code Online (Sandbox Code Playgroud)
在2.x和3.x上,除了必须为scriptrunner指定完整的URI之外,您可以类似的方式使用script- runner.jar。
编辑:对不起,我没有看到您要通过控制台执行此操作。您也可以在控制台中添加相同的步骤。第一步将是具有与上面相同参数的Customer JAR。第二步是火花步骤。希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
17084 次 |
| 最近记录: |