Spark的UDF函数简单使用

类似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)
}

 

你可能感兴趣的:(Spark)