接受类型为“数组-StructType或“ null”的列的UDF的输入类型应该是什么?

时间:2019-11-10 18:36:29

标签: apache-spark apache-spark-sql user-defined-functions

我的DataFrame的架构如下:

root
 |-- col1: string (nullable = true)
 |-- col2: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- unit1: string (nullable = true)
 |    |    |-- sum(unit2): string (nullable = true)
 |    |    |-- max(unit3): string (nullable = true)
 |-- col3: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- unit1: string (nullable = true)
 |    |    |-- sum(unit2): string (nullable = true)
 |    |    |-- max(unit3): string (nullable = true)

我正在用Scala编写一个带cols-col2和col3的UDF。
考虑到col2的值可以为“ null”

,我传递给UDF的每一列的输入类型应该是什么?
val process_stuff = udf((col2: ???, col3: ??? ) => {

到目前为止,我已经尝试过此方法和其他方法

val process_stuff = udf((col2:ArrayType[StructType[StructField]], col3:ArrayType[StructType[StructField]]) => {

但是它在各处警告我 请帮忙!

1 个答案:

答案 0 :(得分:0)

您的UDF应该具有以下签名:

val process_stuff = udf((col2: Seq[Row], col3: Seq[Row]) => {...})