我正在尝试导入并使用带有anaconda的pyspark
。
在安装了spark并设置了$SPARK_HOME
变量后,我尝试了:
$ pip install pyspark
这不会起作用(当然),因为我发现我需要通知python在$SPARK_HOME/python/
下查找pyspark
。问题是,要做到这一点,我需要设置$PYTHONPATH
,而anaconda不使用该环境变量。
我试图将$SPARK_HOME/python/
的内容复制到ANACONDA_HOME/lib/python2.7/site-packages/
,但它不起作用。
有什么解决方案可以在蟒蛇身上使用pyspark吗?
这可能是最近才实现的,但我使用了以下方法,效果非常好。在这之后,我可以"将pyspark导入为ps"并使用它而不会出现任何问题。
conda install -c conda-forge pyspark
您可以简单地将PYSPARK_DRIVER_PYTHON
和PYSPARK_PYTHON
环境变量设置为使用根Anaconda Python或特定的Anaconda环境。例如:
export ANACONDA_ROOT=~/anaconda2
export PYSPARK_DRIVER_PYTHON=$ANACONDA_ROOT/bin/ipython
export PYSPARK_PYTHON=$ANACONDA_ROOT/bin/python
或
export PYSPARK_DRIVER_PYTHON=$ANACONDA_ROOT/envs/foo/bin/ipython
export PYSPARK_PYTHON=$ANACONDA_ROOT/envs/foo/bin/python
当您使用$SPARK_HOME/bin/pyspark
/$SPARK_HOME/bin/spark-submit
时,它将选择正确的环境。请记住,PySpark在所有机器上都必须使用相同的Python版本。
顺便说一句,即使不建议使用PYTHONPATH
,也应该可以正常工作。
以下是我必须在.bashrc中放入的一整套环境变量,以使其在脚本和笔记本中都能工作
export ANACONDA_ROOT=~/anaconda2
export PYSPARK_DRIVER_PYTHON=$ANACONDA_ROOT/bin/ipython
export PYSPARK_PYTHON=$ANACONDA_ROOT/bin/python
export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7
export PYLIB=/opt/spark-2.1.0-bin-hadoop2.7/python/lib
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
也许这可以帮助一些人,根据Anaconda文档,您可以按照如下方式安装FindSpark:
conda install -c conda-forge findspark
只有在安装了它之后,我才能导入FindSpark。不需要导出声明。
我认为您不需要也不能将pyspark作为模块安装。相反,我在~/.bash_profile中扩展了$PYTHONPATH
,如下所示:
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH
之后,我能够import pyspark as ps
。希望这对你也有用。
嘿,你可以试着在Anaconda powershell中运行这些行。直接来自https://anaconda.org/conda-forge/findspark
To install this package with conda run one of the following:
conda install -c conda-forge findspark
conda install -c conda-forge/label/gcc7 findspark
conda install -c conda-forge/label/cf201901 findspark
尝试使用该命令,它将帮助您安装pyspark 的较低版本
pip安装pyspark==3.x.x