sparksql udf自定義函數中參數過多問題的解決


在進行spark sql數據庫操作中,常常需要一些spark系統本身不支持的函數,如獲取某一列值中的字符串。


如要獲取 “aaaakkkkk”中的第4-第8個字符。


針對這種需求,只有設置UDF來實現了。


val fun:((String,Int,Int) => String) = (args:String, k1:Int, k2:Int) => { args.substr(k1,k2)} 

val sqlfunc = udf(fun)


df.withColumn("column22", sqlfunc(col("column1"), 1,3)


這樣就報錯。


才發現這里面由於UDF的原因,在任何函數中這個數字本身是不認的,因此需要加上lit()的命令才可以。




df.withColumn("column22", sqlfunc(col("column1"), lit(1), lit(3)),只有這樣才可以實現。




df.withColumn("column22", sqlfunc(col("column1"), 1,3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM