假设我有一个数据框,其中包含一列(称为 colA),它是行的序列。我想向 colA 的每条记录附加一个新字段。 (而且新的归档与之前的记录相关联,所以我必须写一个udf。)
这个udf应该怎么写呢?
我尝试编写一个 udf,它以 colA 作为输入,并输出 Seq[Row],其中每条记录都包含新字段。但问题是 udf 无法返回 Seq[Row]/ 例外是“不支持类型 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 开始,您可以创建返回的 UDFRow
/ Seq[Row]
,但您必须提供返回类型的架构,例如如果您使用双精度数组:
val schema = ArrayType(DoubleType)
val myUDF = udf((s: Seq[Row]) => {
s // just pass data without modification
}, schema)
但我真的无法想象这在哪里有用,我宁愿从 UDF 返回元组或案例类(或其 Seq)。
编辑:如果您的行包含超过 22 个字段(元组/案例类的字段限制),这可能会很有用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)