spark 2.0 - java.io.IOException:无法运行程序“jupyter”:error = 2,没有这样的文件或目录

时间:2016-08-16 20:48:55

标签: java apache-spark

我正在使用jupyter笔记本来尝试火花。

在我的笔记本中,我尝试了一个Kmean:

from pyspark.ml.clustering import KMeans
from sklearn               import datasets
import pandas as pd

spark = SparkSession\
        .builder\
        .appName("PythonKMeansExample")\
        .getOrCreate()

iris       = datasets.load_iris()
pd_df      = pd.DataFrame(iris['data'])
spark_df   = spark.createDataFrame(pd_df, ["features"])
estimator  = KMeans(k=3, seed=1)

一切顺利,然后我适合模特:

estimator.fit(spark_df)

我收到了一个错误:

16/08/16 22:39:58 ERROR Executor: Exception in task 0.2 in stage 0.0 (TID 24)
java.io.IOException: Cannot run program "jupyter": error=2, No such file or directory

Caused by: java.io.IOException: error=2, No such file or directory

寻找Jupyter的火花在哪里? 如果我可以使用jupyter笔记本,为什么不能找到它? 该怎么办?..

1 个答案:

答案 0 :(得分:2)

正如代码在https://github.com/apache/spark/blob/master/python/pyspark/context.py#L180

中所说的

self.pythonExec = os.environ.get("PYSPARK_PYTHON", 'python')

所以我认为这个错误是由env变量PYSPARK_PYTHON引起的,它表示每个spark节点的python位置,当pyspark启动时,来自sys env的PYSPARK_PYTHON将被注入所有sparknodes,这样

  1. 可以通过

    解决
    export PYSPARK_PYTHON=/usr/bin/python
    

    是diff节点上的相同版本。然后开始:

    pyspark
    
  2. 如果群集的local和diff节点之间存在python的diff版本,则会发生另一个版本冲突错误。

  3. 您使用的交互式python版本应与群集中的其他节点版本相同。