4
definiert

Ich Kopieren des pyspark.ml Beispiel aus dem offiziellen Dokument Webseite: http://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.Transformerpyspark: Nameerror: Name ‚Funke‘ ist nicht

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) 

jedoch das Beispiel würde oben nicht ausgeführt und gab mir die folgende Fehler:

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

Welche zusätzliche Konfiguration/Variable muss eingestellt werden, damit das Beispiel ausgeführt wird?

+0

Änderung an sqlContext funktioniert. Vielen Dank! – Edamame

Antwort

8

Da Sie createDataFrame() anrufen, müssen Sie dies tun:

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

statt dessen:

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

spark steht da als sqlContext.


Im Allgemeinen haben einige Leute, dass als sc, also wenn das nicht funktioniert, könnten Sie versuchen:

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

Wenn ich sc verwende, funktioniert es nicht. Aber wenn ich sqlContext verwende, funktioniert es. Wird das erwartet? – Edamame

+0

Ja @Edamame, es hängt alles davon ab, wie Sie Sachen importieren .. :) – gsamaras

5

Sie

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

an den Anfang hinzufügen können Ihre Codes, um eine SparkSession zu definieren, dann sollte die spark.createDataFrame() funktionieren.

Verwandte Themen