Spark DataFrame自定义函数用于指定列 column UDF scala版

         查了好多东西,Spark DataFrame对列进行操作,agg不能满足对列的所有元素进行广播。 不像Python中的DataFrame操作那样方便。后来发现我们可以使用UDF来注册自定义的函数,从而像使用min、max函数一样方便操作。

       spark版本:2.2.0  

        大致过程分为:自定义函数,只能有一个参数和一个返回值

                                    用udf注册自定义的函数(注意添加引用哦  import

                                    使用udf注册的函数(以下参考代码,可以跑的,scala版

val dataDF = spark.createDataFrame(Seq(
      (10, 20, 30),
      (9, 16, 42),
      (12, 23, 35)
    )).toDF("age1", "age2", "age3")
    dataDF.show()
    import org.apache.spark.sql.functions._
    val udf_isAdult=udf(operation _)  //注册自定义的函数
    val dataDF1= dataDF.select(col("*"),udf_isAdult(col("age1")) as "newAge") //使用
    dataDF.show()
    dataDF1.show()
  }

//自定义的函数,您随意.......
  def operation(x:Int):Double={
    log(x)/100.0
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值