gpt4 book ai didi

scala - Spark Scala数据框udf返回行

转载 作者:行者123 更新时间:2023-12-04 13:36:35 25 4
gpt4 key购买 nike

假设我有一个数据框,其中包含一列(称为colA),该列是行的序列。我想向colA的每个记录追加一个新字段。 (并且新文件与前一个记录相关联,因此我必须编写一个udf。)
我应该怎么写这个udf?

我尝试编写一个以colA作为输入并输出Seq [Row]的udf,其中每个记录都包含新字段。但是问题是udf无法返回Seq [Row]/异常(exception)是“不支持org.apache.spark.sql.Row类型的模式”。
我应该怎么办?

我写的udf:
val convert = udf[Seq[Row], Seq[Row]](blablabla...)
异常是java.lang.UnsupportedOperationException:不支持org.apache.spark.sql.Row类型的模式

最佳答案

从spark 2.0开始,您可以创建返回Row/Seq[Row]的UDF,但必须提供返回类型的架构,例如如果您使用Doubles数组:

val schema = ArrayType(DoubleType)

val myUDF = udf((s: Seq[Row]) => {
s // just pass data without modification
}, schema)

但是我真的无法想象这在哪里有用,我宁愿从UDF返回元组或案例类(或其Seq)。

编辑:如果您的行包含超过22个字段(元组/案例类的字段限制),则可能会很有用

关于scala - Spark Scala数据框udf返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com