我正在使用 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)
Run Code Online (Sandbox Code Playgroud)
一切顺利,然后我拟合模型:
estimator.fit(spark_df)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
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
Run Code Online (Sandbox Code Playgroud)
Spark 在哪里寻找 Jupyter?为什么我可以使用jupyter Notebook却找不到它?该怎么办 ?..
正如代码所示 https://github.com/apache/spark/blob/master/python/pyspark/context.py#L180
self.pythonExec = os.environ.get("PYSPARK_PYTHON", 'python')
Run Code Online (Sandbox Code Playgroud)
所以我认为这个错误是由env变量引起的PYSPARK_PYTHON,它表明每个spark节点的python位置,当pyspark启动时,PYSPARK_PYTHON来自sys env的将被注入到所有sparknodes,这样
可以通过以下方式解决
export PYSPARK_PYTHON=/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
它们在差异节点上是相同的版本。然后开始:
pyspark
Run Code Online (Sandbox Code Playgroud)如果本地和集群的差异节点之间存在不同版本的Python,则会出现另一个版本冲突错误。
您使用的交互式Python版本应该与集群中其他节点的版本相同。
| 归档时间: |
|
| 查看次数: |
11248 次 |
| 最近记录: |