在 scala 中使用 udf 函数时出现错误“Validation$$anonfun$14 无法转换为 scala.Function5”

the*_*ker 1 scala apache-spark

我有 Scala 代码,其中使用 udf 函数来计算计算及其以真或假格式的状态,在执行时我收到这样的错误“无法转换为 scala.Function5”。

任何帮助将不胜感激。

val kdRule = { (st: String, amtIs: Double, sQ: Int, lA: Double, vPP: Double,lD:Double) =>

        if (st != "KL" && st != "AD" && amtIs == 0)

          if (sQ >= 0)

              if (Math.abs(Math.round(lA / sQ)  - Math.round(((vPP * sQ) - lD) / sQ).toDouble ) < 0.02)

                true
              else if (Math.abs(Math.round(lA).toDouble  - Math.round((vPP * sQ) - lD).toDouble ) < 0.02)

                true
              else

                false
              else

                false
        else
          false

      }

      val kdRuleUdf = udf(kdRule)     
      kdDF.withColumn("RowKD", kdRuleUdf(kdDF("stypes"), kdDF("amadv"), kdDF("sdQ"),kdDF("lineM"), kdDF("vPP"),kdDF("lD"))).drop("RowKD")
Run Code Online (Sandbox Code Playgroud)

Sha*_*ala 5

检查你的 UDF,你需要 6 个参数,而你只传递了 5 个参数。

要求: val kdRule = (st: String, amtIs: Double, sQ: Int, lA: Double, vPP: Double, lD: Double)

通过kdRuleUdf(df("stypes"), df("amadv"), df("sdQ"),df("lineM"), df("vPP"))).drop("RowKD")