pyspark : NameError: name 'spark' is not defined
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
还需要设置什么 configuration/variable 才能获得示例 运行ning?
由于您正在调用 createDataFrame(),您需要这样做:
df = sqlContext.createDataFrame(data, ["features"])
而不是这个:
df = spark.createDataFrame(data, ["features"])
spark
作为 sqlContext
站在那里。
一般来说,有些人认为 sc
,所以如果这不起作用,您可以尝试:
df = sc.createDataFrame(data, ["features"])
您可以添加
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
在代码的开头定义一个 SparkSession,spark.createDataFrame()
应该可以工作。
不错,第一次使用。
但是第二次尝试时,它会抛出以下异常:
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
我是复制官网的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
还需要设置什么 configuration/variable 才能获得示例 运行ning?
由于您正在调用 createDataFrame(),您需要这样做:
df = sqlContext.createDataFrame(data, ["features"])
而不是这个:
df = spark.createDataFrame(data, ["features"])
spark
作为 sqlContext
站在那里。
一般来说,有些人认为 sc
,所以如果这不起作用,您可以尝试:
df = sc.createDataFrame(data, ["features"])
您可以添加
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
在代码的开头定义一个 SparkSession,spark.createDataFrame()
应该可以工作。
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