object UDFDemo {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.master("local[*]")
.appName("udfdemo")
.getOrCreate()
import spark.implicits._
val rdd: RDD[(Int, String, Double)] = spark.sparkContext.makeRDD(
Seq(
(1, "zhangsan", 56.0d)
, (2, "lisi", 67.5d)
, (3, "wangwu", 76.6d)
, (4, "zhaoliu", 86.3d)
, (5, "qianqi", 92.5d)
)
)
val df = rdd.toDF("id", "name", "score")
spark.udf.register("scoretrans", (score:Float) => {
var grade = "未知"
if(score >= 90.0f) {
grade = "优"
} else if(score >= 80.0f && score < 90.0f) {
grade = "良"
} else if(score >= 60.0f && score < 80.0f) {
grade ="中"
} else {
grade = "差"
}
grade
})
df.createTempView("t_score")
spark.sql("select id,name,scoretrans(score) grade from t_score").show()
spark.stop()
}
}