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

it2022-05-08  8

         查了好多东西,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 }

 


最新回复(0)