无法在 PySpark 中创建数据框

Posted

技术标签:

【中文标题】无法在 PySpark 中创建数据框【英文标题】:Cannot create Dataframe in PySpark 【发布时间】:2018-10-01 07:13:26 【问题描述】:

我想使用以下代码在 PySpark 中创建一个 Dataframe

from pyspark.sql import *
from pyspark.sql.types import *

temp = Row("DESC", "ID")
temp1 = temp('Description1323', 123)

print temp1

schema = StructType([StructField("DESC", StringType(), False),
                     StructField("ID", IntegerType(), False)])

df = spark.createDataFrame(temp1, schema)

但我收到以下错误:

TypeError: StructType 不能接受类型中的对象“Description1323” 输入'str'

我的代码有什么问题?

【问题讨论】:

【参考方案1】:

问题是你传递了一个Row,你应该传递一个Rows 的列表。试试这个:

from pyspark.sql import *
from pyspark.sql.types import *

temp = Row("DESC", "ID")
temp1 = temp('Description1323', 123)

print temp1

schema = StructType([StructField("DESC", StringType(), False),
                     StructField("ID", IntegerType(), False)])

df = spark.createDataFrame([temp1], schema)

df.show()

结果:

+---------------+---+
|           DESC| ID|
+---------------+---+
|Description1323|123|
+---------------+---+

【讨论】:

以上是关于无法在 PySpark 中创建数据框的主要内容,如果未能解决你的问题,请参考以下文章

在pyspark中创建带有arraytype列的数据框

Pyspark:如何在不同条件的数据框中创建列

在 pyspark 中创建列数组

如何在 pyspark 中创建数据框的副本?

从列表中创建一个 pyspark 数据框列,其中列表的长度与数据框的行数相同

如何在 Pyspark Dataframe 中创建多列的所有成对组合?