java - spark 2.0 - java.io.IOException : Cannot run program "jupyter": error=2, 没有这样的文件或目录

标签 java apache-spark

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

一旦进入我的笔记本,我就会尝试 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

spark 在哪里寻找 Jupyter? 如果我可以使用 jupyter notebook 为什么找不到它? 怎么办?..

最佳答案

正如 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将被注入(inject)所有的sparknodes,这样

  1. 可以解决

    export PYSPARK_PYTHON=/usr/bin/python
    

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

    pyspark
    
  2. 如果本地和集群的diff节点之间存在python的diff版本,会出现另一个version conflicts错误。

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

关于java - spark 2.0 - java.io.IOException : Cannot run program "jupyter": error=2, 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984211/

相关文章:

java - 将 map 中的参数添加到 URL 标记

java - 按位与 (&) 运算符

java - 如何在 Android 上用 Java 创建多图

java - 最佳实践 - SWT 表、TableViewer、EditingSupport

java - Primefaces 中的组合框

scala - 将大文件写入 S3 的最佳方法是什么?

scala - 从提供的等动态更改 sbt 构建文件中的库依赖项

amazon-s3 - Spark s3 读取给出 NullPointerException

apache-spark - PySpark - 添加新的嵌套列或更改现有嵌套列的值

python - 时间过滤 Pyspark 数据框中的结构列