UDF注册错误:不支持类型为org.apache.spark.sql.Dataset [org.apache.spark.sql.Row]的架构

时间:2017-03-28 06:39:01

标签: scala apache-spark apache-spark-sql spark-dataframe

当注册UDF函数低于错误时,其他UDF函数正在运行,但只有此UDF发出问题。

错误: 不支持类型org.apache.spark.sql.Dataset [org.apache.spark.sql.Row]的架构

UDF注册:

spark.udf.register("udfname",udf_name _)

UDF代码: -

 def udf_name(paramter1: String,Parameter2:String): DataFrame = {

val df= spark.textFile("file path")

if (paramter1!= null) {
  val out = df.selectdf("Col1"),
    df("Col2"),
    df("Col3")).filter($"Col4" === Parameter1&&
      $"col5" === Parameter1)
  return df_out

在数据框上应用过滤器后,返回类型更改为“数据集[行]”,为什么将其更改为“数据集”而不是“数据帧”。

1 个答案:

答案 0 :(得分:0)

在UDF中加载文件看起来很奇怪。备选方案:

  1. 文件"文件路径"可以在处理之前加载到数据帧中。然后"文件路径" dataFrame可以与主数据框连接。
  2. 文件"文件路径"可以加载到广播变量中。几个UDF可用于从广播变量到具体列的提取值。