码迷,mamicode.com
首页 > 数据库 > 详细

sparkSQL中udf的使用

时间:2017-07-03 23:44:42      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:方式   context   org   any   知识   margin   问题   contex   .net   

Spark中使用sql时一些功能需要自定义方法实现,这时候就可以使用UDF功能来实现

多参数支持

UDF不支持参数*的方式输入多个参数,例如String*,不过可以使用array来解决这个问题。

定义udf方法,此处功能是将多个字段合并为一个字段

 

def allInOne(seq: Seq[Any], sep: String): String = seq.mkString(sep)

 

 

在sql中使用

 

sqlContext.udf.register("allInOne", allInOne _)

//col1,col2,col3三个字段合并,使用‘,‘分割
val sql =
"""
  |select allInOne(array(col1,col2,col3),",") as col
  |from tableName
""".stripMargin
sqlContext.sql(sql).show()

 

 

在DataFrame中使用

 

import org.apache.spark.sql.functions.{udf,array,lit}
val myFunc = udf(allInOne _)
val cols = array("col1","col2","col3")
val sep = lit(",")
df.select(myFunc(cols,sep).alias("col")).show()

sparkSQL中udf的使用

标签:方式   context   org   any   知识   margin   问题   contex   .net   

原文地址:http://www.cnblogs.com/rxingyue/p/7113252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!