类似Hive,spark也可以进行UDF函数注册与使用,下面就简单的介绍一下
数据源
Jeff 音乐,电影,编程
celestia Jeff,看书
Star 踢球
现在我们注册一个函数,它可以之间统计出Name对应的爱好数量
package com.jeff.UDF
import org.apache.spark.sql.SparkSession
object CountColumns {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().appName("UDF")
//.config("spark.sql.sources.partitionColumnTypeInference.enabled","false")
.master("local[2]").getOrCreate()
val info=spark.sparkContext.textFile("data/UDF.txt")
import spark.implicits._
val df = info.map(_.split("\t")).map(x=>Info(x(0).trim,x(1).trim)).toDF()
// df.show(false)
//info.foreach(println)
spark.udf.register("likes_num", (str:String)=>{
str.split(",").size
})
df.createOrReplaceTempView("info")
spark.sql("select name,likes,likes_num(likes) from info ").show(false)
spark.stop()
}
case class Info(name:String,likes:String)
}