创建结构 PySpark 的 DataFrame
Posted
技术标签:
【中文标题】创建结构 PySpark 的 DataFrame【英文标题】:create DataFrame of struct PySpark 【发布时间】:2019-12-22 15:05:18 【问题描述】:enter image description here我怎样才能创建一个空结构的数据框。? 谢谢。
dataxx = []
schema = StructType(
[
StructField('Info1',
StructType([
StructField('fld', IntegerType(),True),
StructField('fld1', IntegerType(),True),
StructField('fld2', IntegerType(),True),
StructField('fld3', IntegerType(),True),
StructField('fld4', IntegerType(),True),
])
),
]
)
df = sqlCtx.createDataFrame(dataxx, schema)
感谢您的帮助
【问题讨论】:
与熊猫无关..已删除 你试过spark.createDataFrame([], schema)
吗?
这能回答你的问题吗? How to create an empty DataFrame? Why "ValueError: RDD is empty"?
@blackbishop 谢谢,但这不是我的意思。我想创建这样的数据框结构体。我添加了一张图片以便更好地理解。
【参考方案1】:
如果您想创建具有特定架构但不包含数据的 DataFrame,只需向 createDataFrame
函数提供空列表即可:
from pyspark.sql.types import *
schema = StructType(
[
StructField('Info1',
StructType([
StructField('fld', IntegerType(),True),
StructField('fld1', IntegerType(),True),
StructField('fld2', IntegerType(),True),
StructField('fld3', IntegerType(),True),
StructField('fld4', IntegerType(),True),
])
),
]
)
df = spark.createDataFrame([], schema)
df.printSchema()
root
|-- Info1: struct (nullable = true)
| |-- fld: integer (nullable = true)
| |-- fld1: integer (nullable = true)
| |-- fld2: integer (nullable = true)
| |-- fld3: integer (nullable = true)
| |-- fld4: integer (nullable = true)
这里spark
是sparkSession。
【讨论】:
谢谢大卫在我的 fld2 中增加价值,例如我可以这样做吗? ??df.Info1.fld2 = 22 @ceo 不,恐怕它不会像这样工作。如果您想为 info1.fld2 添加值(并且在 DataFrame 中有一行),您可以调用withColumn
转换(或只是 select
)并重新定义结构并在 fld2
中使用 lit(22)
以上是关于创建结构 PySpark 的 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章