簡體   English   中英

pyspark:NameError:未定義名稱'spark'

[英]pyspark : NameError: name 'spark' is not defined

我正在從官方文檔網站復制 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)

但是,上面的示例無法運行並給我以下錯誤:

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

需要設置哪些額外的配置/變量才能使示例運行?

你可以加

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

在您的代碼開始定義SparkSession,然后spark.createDataFrame()應該工作。

由於您調用createDataFrame() ,因此需要執行以下操作:

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

而不是這個:

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

spark就像sqlContext一樣站在那里。


一般來說,有些人認為它是sc ,所以如果不起作用,你可以嘗試:

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

按懷一回答很好,並且會第一次工作。 但是第二次嘗試時,會拋出以下異常:

ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=pyspark-shell, master=local) created by __init__ at <ipython-input-3-786525f7559f>:10 

有兩種方法可以避免它。

1)使用SparkContext.getOrCreate()而不是SparkContext()

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

2)最后使用sc.stop() ,或者在啟動另一個SparkContext之前。

如果它錯誤您關於其他打開的會話,請執行以下操作:

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext.getOrCreate();

spark = SparkSession(sc)
scraped_data=spark.read.json("/Users/reihaneh/Desktop/nov3_final_tst1/")

如果您使用 python,則必須按以下方式導入 spark,然后它將創建一個 spark 會話,但請記住這是一種舊方法,盡管它會起作用。

from pyspark.shell import spark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM