Spark SQL表达式内部可用函数与相关源码
版权声明:本文为博主原创文章,未经博主允许不得转载。
手动码字不易,请大家尊重劳动成果,谢谢
虽然标题写着是Spark SQL可用函数,但是我并不想直接把它们贴出来。代码是最好的老师,因此我要教大家自己从源码中获得这些函数。因为随着Spark的版本更新,内置函数会越来越多,单纯把一个版本的函数列出来可能会误导他人。所以本文所介绍的内容是各版本通用的。
代码中的表达式函数
使用代码中的表达式函数
我这里所指的表达式代码中的函数即sin
、cos
、isnull
这种可以在表达式中编写的函数:
df.select(sin($"a").as("sin_a"), cos($"a").as("cos_a")).filter(!isnull($"sin_a"))
获取当前使用版本的表达式函数集合
这个类型的函数是定义在org.apache.spark.sql.functions伴生对象中。
在使用时,只用import org.apache.spark.sql.functions._即可使用其中的所有表达式函数。在需要使用这种类型的函数时,只需要打开这个类即可查找你所需要的函数。
比如sin
函数的定义为:
/**
* @param e angle in radians
* @return sine of the angle, as if computed by `java.lang.Math.sin`
*
* @group math_funcs
* @since 1.4.0
*/
def sin(e: Column): Column = withExpr { Sin(e.expr) }
/**
* @param columnName angle in radians
* @return sine of the angle, as if computed by `java.lang.Math.sin`
*
* @group math_funcs
* @since 1.4.0
*/
def sin(columnName: String): Column = sin(Column(columnName))
有两个重载版本,第一个重载版本sin(e: C