在 spark 数据框中创建 StructType 的空列

Posted

技术标签:

【中文标题】在 spark 数据框中创建 StructType 的空列【英文标题】:Create empty column of StructType in spark dataframe 【发布时间】:2018-11-06 13:20:35 【问题描述】:

我需要将一个空的 StructType 列添加到现有的 DataFrame 中。

尝试以下:

df = df.withColumn("features", typedLit(StructType(Nil)))

还有:

df = df.withColumn("features", lit(new GenericRowWithSchema(Array(), StructType(Nil))))

但是,在上述两种情况下,都会因不支持的文字类型而出现错误。

【问题讨论】:

【参考方案1】:

粗略地,可以使用用户定义的函数来添加一列空行:

def addEmptyRowColumn(df: DataFrame, newColumnName: String): DataFrame = 
  val addEmptyRowUdf = udf( () =>
    new GenericRowWithSchema(Array(), StructType(Nil)), StructType(Nil))

  df.withColumn(newColumnName, addEmptyRowUdf())


df = addEmptyRowColumn(df, "features")

【讨论】:

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

在列表中创建 Spark 数据框后如何使用它们?

如何将StructType从Spark中的json数据框分解为行而不是列

火花在UDF中创建数据框

如何在 spark 数据框中创建唯一的自动生成的 Id 列

无法在 spark/pyspark 中创建数组文字

在 Spark 中创建数据帧时出错