Eda*_*ame 11 machine-learning distributed-computing apache-spark pyspark apache-spark-ml
我正在复制官方文档网站上的pyspark.ml示例:http://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.Transformer
data = [(Vectors.dense([0.0, 0.0]),), (Vectors.dense([1.0, 1.0]),),(Vectors.dense([9.0, 8.0]),), (Vectors.dense([8.0, 9.0]),)]
df = spark.createDataFrame(data, ["features"])
kmeans = KMeans(k=2, seed=1)
model = kmeans.fit(df)
Run Code Online (Sandbox Code Playgroud)
但是,上面的示例不会运行并给我以下错误:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-28-aaffcd1239c9> in <module>()
1 from pyspark import *
2 data = [(Vectors.dense([0.0, 0.0]),), (Vectors.dense([1.0, 1.0]),),(Vectors.dense([9.0, 8.0]),), (Vectors.dense([8.0, 9.0]),)]
----> 3 df = spark.createDataFrame(data, ["features"])
4 kmeans = KMeans(k=2, seed=1)
5 model = kmeans.fit(df)
NameError: name 'spark' is not defined
Run Code Online (Sandbox Code Playgroud)
需要设置哪些额外的配置/变量才能运行示例?
小智 31
你可以加
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
Run Code Online (Sandbox Code Playgroud)
在你的代码的开头定义一个SparkSession,然后spark.createDataFrame()
应该工作.
Cod*_*ass 18
由 ??? 很好,将第一次工作。但是第二次尝试时,它会抛出以下异常:
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=pyspark-shell, master=local) created by __init__ at <ipython-input-3-786525f7559f>:10
Run Code Online (Sandbox Code Playgroud)
有两种方法可以避免它。
1)使用SparkContext.getOrCreate()
代替SparkContext()
:
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
Run Code Online (Sandbox Code Playgroud)
2)sc.stop()
在最后使用,或者在你启动另一个 SparkContext 之前。
gsa*_*ras 12
由于您调用createDataFrame(),因此需要执行以下操作:
df = sqlContext.createDataFrame(data, ["features"])
Run Code Online (Sandbox Code Playgroud)
而不是这个:
df = spark.createDataFrame(data, ["features"])
Run Code Online (Sandbox Code Playgroud)
spark
站在那里作为sqlContext
.
一般来说,有些人认为那样sc
,所以如果不起作用,你可以尝试:
df = sc.createDataFrame(data, ["features"])
Run Code Online (Sandbox Code Playgroud)