python - pyspark 错误 : AttributeError: 'SparkSession' object has no attribute 'parallelize'

标签 python hadoop pandas apache-spark pyspark

我在 Jupyter notebook 上使用 pyspark。以下是 Spark 的设置方式:

import findspark
findspark.init(spark_home='/home/edamame/spark/spark-2.0.0-bin-spark-2.0.0-bin-hadoop2.6-hive', python_path='python2.7')

    import pyspark
    from pyspark.sql import *

    sc = pyspark.sql.SparkSession.builder.master("yarn-client").config("spark.executor.memory", "2g").config('spark.driver.memory', '1g').config('spark.driver.cores', '4').enableHiveSupport().getOrCreate()

    sqlContext = SQLContext(sc)

然后当我这样做时:

spark_df = sqlContext.createDataFrame(df_in)

df_in 是一个 pandas 数据框。然后我得到以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-9-1db231ce21c9> in <module>()
----> 1 spark_df = sqlContext.createDataFrame(df_in)


/home/edamame/spark/spark-2.0.0-bin-spark-2.0.0-bin-hadoop2.6-hive/python/pyspark/sql/context.pyc in createDataFrame(self, data, schema, samplingRatio)
    297         Py4JJavaError: ...
    298         """
--> 299         return self.sparkSession.createDataFrame(data, schema, samplingRatio)
    300 
    301     @since(1.3)

/home/edamame/spark/spark-2.0.0-bin-spark-2.0.0-bin-hadoop2.6-hive/python/pyspark/sql/session.pyc in createDataFrame(self, data, schema, samplingRatio)
    520             rdd, schema = self._createFromRDD(data.map(prepare), schema, samplingRatio)
    521         else:
--> 522             rdd, schema = self._createFromLocal(map(prepare, data), schema)
    523         jrdd = self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd())
    524         jdf = self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(), schema.json())

/home/edamame/spark/spark-2.0.0-bin-spark-2.0.0-bin-hadoop2.6-hive/python/pyspark/sql/session.pyc in _createFromLocal(self, data, schema)
    400         # convert python objects to sql data
    401         data = [schema.toInternal(row) for row in data]
--> 402         return self._sc.parallelize(data), schema
    403 
    404     @since(2.0)

AttributeError: 'SparkSession' object has no attribute 'parallelize'

有谁知道我做错了什么?谢谢!

最佳答案

SparkSession 不是 SparkContext 的替代品,而是 SQLContext 的等价物。只需像使用 SQLContext 一样使用它:

spark.createDataFrame(...)

如果您必须访问 SparkContext,请使用 sparkContext 属性:

spark.sparkContext

因此,如果您需要 SQLContext 来实现向后兼容性,您可以:

SQLContext(sparkContext=spark.sparkContext, sparkSession=spark)

关于python - pyspark 错误 : AttributeError: 'SparkSession' object has no attribute 'parallelize' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39521341/

相关文章:

python - 色调应用的错误

hadoop - 如何从PIG中的每个组中获得MAX

Python pandas - 将目录中的csv文件合并为一个

python - 如何在 python/pandas 中的毫秒部分中转换带有逗号 (,) 的日期时间字符串?

java - Python 3.7 连接到 MAC 上的 HSQLDB

python - 将 Netcat 流写入带有附加文本的文件

hadoop - Apache Flume无法将文件从源复制到目标

hadoop - Reducer迭代context.write

python - 如何根据列值删除行,其中某些行的列值是另一行的子集?

python - python 字符串中出现频率最高的一个或多个字母