4

我複製從公文網站pyspark.ml例如: http://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.Transformerpyspark:NameError:名字「火花」是沒有定義

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) 

然而,上面的例子將無法運行,並給了我以下錯誤:

--------------------------------------------------------------------------- 
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 

需要設置哪些其他配置/變量才能運行示例?

+0

更改爲sqlContext的工作原理。謝謝! – Edamame

回答

8

既然你打電話createDataFrame(),你需要這樣做:

df = sqlContext.createDataFrame(data, ["features"]) 

,而不是這樣的:

df = spark.createDataFrame(data, ["features"]) 

spark站在那裏爲sqlContext


一般情況下,有些人有,作爲sc,因此,如果沒有工作,你可以嘗試:

df = sc.createDataFrame(data, ["features"]) 
+0

如果我使用sc,它不起作用。但是,如果我使用sqlContext,它的工作原理。這是預期的嗎? – Edamame

+0

是@Edamame,這一切都取決於你如何導入東西.. :) – gsamaras

5

您可以添加

from pyspark.context import SparkContext 
from pyspark.sql.session import SparkSession 
sc = SparkContext('local') 
spark = SparkSession(sc) 

到的開頭你的代碼來定義一個SparkSession,然後spark.createDataFrame()應該工作。