我有一个自定义的udf并在spark中注册。如果我尝试访问该UDF,它会抛出错误。无法访问。
我试过这样。
spark.udf.register("rssi_weightage", FilterMap.rssi_weightage)
val filterop = input_data.groupBy($"tagShortID", $"Timestamp", $"ListenerShortID", $"rootOrgID", $"subOrgID").agg(first(rssi_weightage($"RSSI").as("RSSI_Weight")))
首先显示错误(rssi_weightage($“RSSI”)//找不到rssi_weightage错误
任何帮助将不胜感激。
答案 0 :(得分:2)
这不是你使用udf的方式,实际的udf是来自spark.udf.register
的返回值。所以你可以这样做:
val udf_rssii_weightage = spark.udf.register("rssi_weightage", FilterMap.rssi_weightage)
val filterop = input_data.groupBy($"tagShortID", $"Timestamp", $"ListenerShortID", $"rootOrgID", $"subOrgID").agg(first(udf_rssi_weightage($"RSSI")).as("RSSI_Weight"))
但是在你的情况下你不需要注册udf,只需使用org.apache.spark.sql.functions.udf
将常规函数转换为udf:
val udf_rssii_weightage = udf(FilterMap.rssi_weightage)