首页 > 解决方案 > Spark UDF - 返回类型 DataFrame

问题描述

我创建了一个 UDF,它将在 DataFrame 中添加一个列标志并返回新的 dataFrame。

def find_mismatch = udf((df: DataFrame) => {
df.withColumn("Flag",when(df("T_RTR_NUM").isNull && df("P_RTR_NUM").isNull , 
"Present in Flex but missing Trn and Platform"))

}
)

我能够创建 UDF,但是当我将 DataFrame 传递给 this 时,它会出错。它适用于正常功能,但当涉及到 Spark UDF 时,它会出错。

另外,请帮助我了解如果我使用普通函数而不是 spark UDF 会有什么不同。

请帮忙。我附上了代码截图。 在此处输入图像描述

标签: scalaapache-sparkapache-spark-sql

解决方案


您不能将 DataFrame 传递给 UDF,因为 DataFrame 由 spark 上下文(即在驱动程序处)处理,并且您不能将其传递给在不同执行器上运行的 UDF(并且只保存数据帧的一小部分)

特别是关于您要解决的问题 - 正如@Manoj 所提到的,您实际上并不需要使用 UDF 来获得所需的结果


推荐阅读