1
如何创建UDF
为outer join
说,例如,我具有低于柱上用类型如下用户定义函数用于加入
ColA: String
ColB: Seq[Row]
DF1:
ColA ColB
1 [(1,2),(1,3)]
2 [(2,3),(3,4)]
DF2:
ColA ColB
1 [(1,2),(1,4)]
3 [(2,5),(3,4)]
结果:
ColA newCol
1 [(1,2),(1,3)]
2 [(2,3),(3,4)]
3 [(2,5),(3,4)]
代码例如:
val joinDf=DF1.join(DF2,DF1(ColA)===DF2(ColA),"outer")
.withColumn("newCol", when(DF1(ColB).isNull,DF2(ColB))
.otherwise(when(DF2(ColB).isNull,DF1(ColB)).otherwise(DF1(ColB))))
.select(col("colA"),col("newCol"))
val joinUdf=udf((a: Seq[Row],b: Seq[Row]) => (a,b) match {
case (null,b) => a
case (a,null) => b
case (a,b) => b
}
这引发错误。
Java.lang.UnsupportedOperationException ::类型架构org.apache.spark.sql.Row不支持
什么是你得到的错误?请更新那个 –
你能否更新你的DF1模式? –
seq [行]在数据框中不可行。它可能在RDD中。 –