AttributeError:' NoneType'对象没有属性≻#sc;

时间:2016-11-28 07:59:33

标签: pyspark pyspark-sql

对不起。今天我想运行一个关于如何在Pyspark中用sqlContext创建DataFrame的程序。结果是一个AttributeError,它是" AttributeError:' NoneType'对象没有属性''"   我的电脑是win7,火花的版本是1.6.0,API是python3。我有几次google并阅读Spark Python API文档,无法解决问题。所以我寻求你的帮助。

我的代码就是:

   #python version is 3.5
   sc.stop()
   import pandas as pd
   import numpy as np
   sc=SparkContext("local","app1"
   data2=[("a",5),("b",5),("a",5)]
   df=sqlContext.createDataFrame(data2)

结果是:

    AttributeError                            Traceback (most recent call last)
    <ipython-input-19-030b8faadb2c> in <module>()
    5 data2=[("a",5),("b",5),("a",5)]
    6 print(data2)
    ----> 7 df=sqlContext.createDataFrame(data2)

    D:\spark\spark-1.6.0-bin-hadoop2.6\python\pyspark\sql\context.py in  createDataFrame(self, data, schema, samplingRatio)
    426             rdd, schema = self._createFromRDD(data, schema, samplingRatio)
    427         else:
    --> 428             rdd, schema = self._createFromLocal(data, schema)
    429         jrdd = self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd())
    430         jdf = self._ssql_ctx.applySchemaToPythonRDD(jrdd.rdd(), schema.json())

    D:\spark\spark-1.6.0-bin-hadoop2.6\python\pyspark\sql\context.py in _createFromLocal(self, data, schema)
   358         # convert python objects to sql data
   359         data = [schema.toInternal(row) for row in data]
   --> 360         return self._sc.parallelize(data), schema
   361 
   362     @since(1.3)

    D:\spark\spark-1.6.0-bin-hadoop2.6\python\pyspark\context.py in parallelize(self, c, numSlices)
   410         [[], [0], [], [2], [4]]
   411         """
   --> 412         numSlices = int(numSlices) if numSlices is not None else self.defaultParallelism
   413         if isinstance(c, xrange):
   414             size = len(c)

   D:\spark\spark-1.6.0-bin-hadoop2.6\python\pyspark\context.py in     defaultParallelism(self)
  346         reduce tasks)
  347         """
  --> 348         return self._jsc.sc().defaultParallelism()
  349 
  350     @property

 AttributeError: 'NoneType' object has no attribute 'sc'

我是如此模糊,以至于我创造了&#34; sc&#34;事实上,为什么它会显示&#34;&#39; NoneType&#39;对象没有属性&#39; sc&#39;&#34;?

2 个答案:

答案 0 :(得分:1)

这应该有效(除了你缺少的代码&#39;)&#39;在sc创作的最后,我想象的是一种类型)。您可以尝试按如下方式创建sc:

conf = SparkConf().setAppName("app1").setMaster("local")
sc = SparkContext(conf=conf)

BTW sc.stop意味着你已经有了一个spark上下文,如果你使用了pyspark,则为true,但如果你使用spark-submit则不然。最好使用SparkContext.getOrCreate,它适用于两种情况。

答案 1 :(得分:0)

这是为我工作的一个最小示例。我不确定,如果以后不使用熊猫,为什么要首先进口熊猫。我想你的意图是从熊猫对象创建一个DataFrame。因此,这里有一个从pandas-Dataframe生成spark-DataFrame的示例。

import pandas as pd
from pyspark import SQLContext
df = pd.DataFrame({'x': [1, 2, 3]})
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
sqlContext.createDataFrame(df)

我也在jupyter笔记本中运行spark。