【发布时间】:2019-01-19 20:51:04
【问题描述】:
我有一个 Seq[Seq[String]] 的 DataFrame 字段,我构建了一个 UDF 来将所述列转换为 Seq[String] 的列;基本上,来自 Scala 的 flatten 函数的 UDF。
def combineSentences(inCol: String, outCol: String): DataFrame => DataFrame = {
def flatfunc(seqOfSeq: Seq[Seq[String]]): Seq[String] = seqOfSeq match {
case null => Seq.empty[String]
case _ => seqOfSeq.flatten
}
df: DataFrame => df.withColumn(outCol, udf(flatfunc _).apply(col(inCol)))
}
我的用例是字符串,但显然,这可能是通用的。您可以在一系列 DataFrame 转换中使用此函数,例如:
df.transform(combineSentences(inCol, outCol))
是否有一个 Spark 内置函数可以做同样的事情?我一直找不到。
【问题讨论】:
标签: scala apache-spark apache-spark-sql user-defined-functions