如何在pyspark中创建空结构?

我正在尝试在 pyspark 中创建空结构列。对于数组这有效

import pyspark.sql.functions as F
df = df.withColumn('newCol', F.array([]))

但这给了我一个错误。

df = df.withColumn('newCol', F.struct())

我看到了类似的问题,但对于 scala 而不是 pyspark 所以它并没有真正帮助我。

stack overflow How to create empty struct in pyspark?
原文答案

答案:

作者头像

如果您知道 struct 列的架构,则可以使用函数 from_json 如下

    struct_schema = StructType([
       StructField('name', StringType(), False),
       StructField('surname', StringType(), False),
    ])

    df = df.withColumn(
      'newCol', F.from_json(psf.lit(""), struct_schema)
    )
作者头像

实际上数组并不是真正的空,因为它有一个空元素。你应该考虑这样的事情:

df = df.withColumn('newCol', F.lit(None).cast(T.StructType())

PS:这是我的评论到答案的后期转换,因为它已经被提议了 - 我希望它会有所帮助,即使它在 OP 的问题之后迟到了