pyspark:名称错误:名称'spark'未定义

0vvn1miw  于 2022-12-28  发布在  Spark
关注(0)|答案(5)|浏览(230)

我是pyspark.ml从官方文件网站复制www.example.com示例: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

要运行示例,还需要设置哪些配置/变量?

ego6inou

ego6inou1#

您可以添加

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

到代码的开头来定义SparkSession,那么spark.createDataFrame()应该可以工作。

kx5bkwkv

kx5bkwkv2#

Answer by 率怀一很好,第一次会工作,但是第二次尝试时,它会抛出下面的异常:

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)最后或在启动另一个SparkContext之前使用sc.stop()

qv7cva1a

qv7cva1a3#

由于您要调用createDataFrame(),因此需要执行以下操作:

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

而不是这样:

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

spark在那里代表sqlContext
一般来说,有些人会把它写成sc,所以如果它不起作用,你可以试试:

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

w8ntj3qf4#

如果它错误你关于其他开放的会话这样做:

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/")
rjjhvcjd

rjjhvcjd5#

如果你使用的是python,你必须按如下方式导入spark,然后它会创建一个spark会话,但是记住这是一个老方法,尽管它会工作。

from pyspark.shell import spark

相关问题