Scala 什么是Spark UDF?

Scala 什么是Spark UDF?,scala,apache-spark,Scala,Apache Spark,我一直在写一些变压器和估计器,我一直注意到UDF。我已经通读了资料来源,大致了解了它们的用途,但我希望有人能给我一个高层次的解释 我从代码中收集到的信息是,您可以创建一个udf并应用它,以便它在数据帧中的每一行上为特定列运行。我想我很好奇为什么我们要这样做?您在RDD和数据帧上编写的所有自定义操作本质上都是“用户定义函数”。您可以注册一个UDF,这样您就可以在Spark SQL中使用的select语句中使用它(sqlContext.SQL(“从myRegistredDF中选择myUDF(fiel

我一直在写一些变压器和估计器,我一直注意到UDF。我已经通读了资料来源,大致了解了它们的用途,但我希望有人能给我一个高层次的解释


我从代码中收集到的信息是,您可以创建一个udf并应用它,以便它在数据帧中的每一行上为特定列运行。我想我很好奇为什么我们要这样做?

您在RDD和数据帧上编写的所有自定义操作本质上都是“用户定义函数”。您可以注册一个UDF,这样您就可以在Spark SQL中使用的select语句中使用它(sqlContext.SQL(“从myRegistredDF中选择myUDF(fieldname))…

UDF(用户定义函数)和UDAF(用户定义聚合函数)允许扩展语言结构,以便在分布式数据集上进行特殊处理。 你可以参考这个博客来获得详细的解释。

可能重复的是,我看了那一个,感觉它没有达到我想要的高水平。不过谢谢。UDF只是在使用SQL方法时扩展框架功能的一种方式。假设您有一些公式要应用于一些地理标记事件,例如haversine距离。UDF让您定义一些
haversine
函数,直接在SQL查询中使用它,就像在
选择haversine(x,y)中一样从事件…
。如果没有这一点,替代方案将是转换回RDD或其他类似的多步骤方法。UDF只是使功能更易于表达和阅读,在幕后它仍然只是一张
地图。请确保这是有意义的。