首页 > 代码库 > sparkSQL中udf的使用
sparkSQL中udf的使用
在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的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。