我正在使用我自己没有在AWS中设置的EMR .
我试图理解Python解释器火花正在使用什么,在我的.bashrc中我有以下设置 export PYSPARK_PYTHON=/mnt/anaconda/bin/python
当我运行spark-submit命令时,我使用sys.executable打印到python解释器的路径,这确实是它使用的解释器 .
但是,当我专门去那个文件夹时,用 ./python
启动那个Python实例,然后尝试 import pyspark
我得到:
>>> import pyspark
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pyspark
这里发生了什么?这个解释器不应该安装pyspark模块吗?
1 回答
当你调用spark-submit时,它会将它自己的python文件夹和py4j库添加到PYTHONPATH中 . 他们住在安装的spark文件夹中,它们不是直接安装到你正在使用的python的site-packages中 . 例如,如果我pyspark打印python路径:
您可以在列表中看到它已手动添加:
/home/ryan/apps/spark/python/lib/py4j-0.10.4-src.zip
/ home / ryan / apps / spark / python
要确保始终使用正确的库设置解释器,您只需将PYSPARK_PYTHON设置为指向您要使用的python安装,然后运行“pyspark”而不是直接运行python . 或者,如果您想提供驱动程序,则可以使用spark-submit .