UDF可以将一个或者多个列作为输入,同时也可以返回一个或者多个列。在一般情况下,这些函数被注册为SparkSession或者Countext的临时函数。

注册成DataFrame的函数

案例:向UDF中注册一个3次幂函数的自定函数
函数:

  def pow3(number:Double)={
    number*number*number
  }

注册:

  def pow3(number:Double)={
    number*number*number
  }

上面的方法只能将pow3udf在DataFrame中使用,而不能在字符串表达式中使用。

Spark SQL函数

  def pow3(number:Double)={
    number*number*number
  }