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)
检查你的 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")
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |