为什么在 YARN 集群模式下 spark-submit 在 executor 上找不到 python 包?

Fra*_*ank 5 python apache-spark pyspark

我正在boo.py使用spark-submit(Spark 2.0)在 AWS EMR 上运行脚本。

当我使用时文件成功完成

python boo.py
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时它失败了

spark-submit --verbose --deploy-mode cluster --master yarn  boo.py
Run Code Online (Sandbox Code Playgroud)

登录yarn logs -applicationId ID_number显示:

Traceback (most recent call last):
File "boo.py", line 17, in <module>
import boto3
ImportError: No module named boto3
Run Code Online (Sandbox Code Playgroud)

我正在使用的pythonboto3模块是

$ which python
/usr/bin/python
$ pip install boto3
Requirement already satisfied (use --upgrade to upgrade): boto3 in /usr/local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

如何附加此库路径以便spark-submit可以读取boto3模块?

Yar*_*ron 3

当您运行 Spark 时,部分代码在驱动程序上运行,部分代码在执行程序上运行。

您是仅在驱动程序上安装 boto3,还是在驱动程序 + 所有可能运行您的代码的执行程序(节点)上安装 boto3?

一种解决方案可能是 - 在所有执行器(节点)上安装 boto3

如何在 Amazon EMR 节点上安装 python 模块

如何在 Amazon EMR 上引导安装 Python 模块?