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

在進行spark sql數據庫操做中,經常須要一些spark系統自己不支持的函數,如獲取某一列值中的字符串。sql


如要獲取 「aaaakkkkk」中的第4-第8個字符。數據庫


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


spa

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

val sqlfunc = udf(fun)it


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


這樣就報錯。數據


才發現這裏面因爲UDF的緣由,在任何函數中這個數字自己是不認的,所以須要加上lit()的命令才能夠。top




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




df.withColumn("column22", sqlfunc(col("column1"), 1,3)
相關文章
相關標籤/搜索