在 Pyspark 中将 Pandas 数据帧转换为 Spark 数据帧的 TypeError

Posted

技术标签:

【中文标题】在 Pyspark 中将 Pandas 数据帧转换为 Spark 数据帧的 TypeError【英文标题】:TypeError converting a Pandas Dataframe to Spark Dataframe in Pyspark 【发布时间】:2016-05-24 09:45:21 【问题描述】:

我进行了研究,但没有找到任何相关信息。我想将一个简单的 pandas.DataFrame 转换为 spark 数据框,如下所示:

df = pd.DataFrame('col1': ['a', 'b', 'c'], 'col2': [1, 2, 3])
sc_sql.createDataFrame(df, schema=df.columns.tolist()) 

我得到的错误是:

TypeError: Can not infer schema for type: <class 'str'>

我尝试了一些更简单的方法:

df = pd.DataFrame([1, 2, 3])
sc_sql.createDataFrame(df)

我得到:

TypeError: Can not infer schema for type: <class 'numpy.int64'>

有什么帮助吗?是否需要手动指定架构?

sc_sqlpyspark.sql.SQLContext,我在 python 3.4 和 spark 1.6 的 jupyter notebook 中。

谢谢!

【问题讨论】:

我试过代码工作正常,没有错误。 它不适合我,不管有没有架构...... 您使用的是哪个 spark 版本? 我在 Spark 1.6.1 你用的是什么版本的 Pandas? 【参考方案1】:

和你的spark版本有关,最新更新的spark让类型推断更加智能。您可以通过添加这样的架构来解决此问题:

mySchema = StructType([ StructField("col1", StringType(), True), StructField("col2", IntegerType(), True)])
sc_sql.createDataFrame(df,schema=mySchema)

【讨论】:

以上是关于在 Pyspark 中将 Pandas 数据帧转换为 Spark 数据帧的 TypeError的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas 数据帧上应用 Pyspark 管道

将数据帧从 pandas 转换为 pyspark 到 Foundry 的数据类型

通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

在 zeppelin 中将 pandas 数据帧转换为 spark 数据帧

将 pyspark 数据帧转换为 pandas 会抛出 org.apache.spark.SparkException: Unseen label: null [重复]

如何在 ipython 中将 Spark RDD 转换为 pandas 数据帧?