我正在运行Jupyter笔记本公共服务器,如本教程:http://jupyter-notebook.readthedocs.io/en/stable/public_server.html
我想在这台服务器上使用pyspark-2.2.1。我pip-installed py4j并从存储库下载了spark-2.2.1。
在本地,我在.bashrc中添加了命令行
export SPARK_HOME='/home/ubuntu/spark-2.2.1-bin-hadoop2.7'
export PATH=$SPARK_HOME:$PATH
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
当我在本地运行python时,一切正常。
然而,当使用笔记本服务器时,我无法导入pyspark,因为上述命令尚未在jupyter笔记本的启动时执行。
我部分(并且非优雅地)通过键入
解决了这个问题import sys
sys.path.append("/home/ubuntu/spark-2.2.1-bin-hadoop2.7/python")
在笔记本的第一个单元格中。但是
from pyspark import SparkContext
sc = SparkContext()
myrdd = sc.textFile('exemple.txt')
myrdd.collect() # Everything works find util here
words = myrdd.map(lambda x:x.split())
words.collect()
返回错误
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost, executor driver): java.io.IOException: Cannot run program "python": error=2, No such file or directory
我知道如何设置正确的路径(手动或启动时)?
由于