未绑定方法 createDataFrame()

Posted

技术标签:

【中文标题】未绑定方法 createDataFrame()【英文标题】:unbound method createDataFrame() 【发布时间】:2016-09-15 08:03:02 【问题描述】:

我在尝试从 RDD 创建 DataFrame 时遇到错误。我的代码:

from pyspark import SparkConf, SparkContext
from pyspark import sql


conf = SparkConf()
conf.setMaster('local')
conf.setAppName('Test')
sc = SparkContext(conf = conf)
print sc.version

rdd = sc.parallelize([(0,1), (0,1), (0,2), (1,2), (1,10), (1,20), (3,18), (3,18), (3,18)])

df = sql.SQLContext.createDataFrame(rdd, ["id", "score"]).collect()

print df

错误:

df = sql.SQLContext.createDataFrame(rdd, ["id", "score"]).collect()
TypeError: unbound method createDataFrame() must be called with SQLContext 
           instance as first argument (got RDD instance instead)

我在 spark shell 中完成了相同的任务,其中直接的最后三行代码将打印值。我主要怀疑 import 语句,因为这就是 IDE 和 Shell 之间的区别。

【问题讨论】:

【参考方案1】:

您需要使用 SQLContext 的实例。因此,您可以尝试以下方法:

sqlContext = sql.SQLContext(sc)
df = sqlContext.createDataFrame(rdd, ["id", "score"]).collect()

更多详情请见pyspark documentation。

【讨论】:

以上是关于未绑定方法 createDataFrame()的主要内容,如果未能解决你的问题,请参考以下文章

Python:绑定一个未绑定的方法?

使用 sparkSession.createDataFrame 以 parquet 格式一次将多行写入 s3

绑定和未绑定方法对象的 id() --- 有时不同对象相同,有时相同对象不同

DA14683开发:开发环境安装报错整理

从类外部的现有方法创建静态方法? (“未绑定方法”错误)

在 Python 3 中获取未绑定方法对象的定义类