一:程序部分
1.需求
Double数据类型格式化,可以给定小数点位数
2.程序
1 package com.scala.it 2 import org.apache.spark.{SparkConf, SparkContext} 3 import org.apache.spark.sql.SQLContext 4 import org.apache.spark.sql.hive.HiveContext 5 6 import scala.math.BigDecimal.RoundingMode 7 object SparkSQLUDFDemo { 8 def main(args: Array[String]): Unit = { 9 val conf = new SparkConf() 10 .setMaster("local[*]") 11 .setAppName("udf") 12 val sc = SparkContext.getOrCreate(conf) 13 val sqlContext = new HiveContext(sc) 14 15 // ================================== 16 // 写一个Double数据格式化的自定义函数(给定保留多少位小数部分) 17 sqlContext.udf.register( 18 "doubleValueFormat", // 自定义函数名称 19 (value: Double, scale: Int) => { 20 // 自定义函数处理的代码块 21 BigDecimal.valueOf(value).setScale(scale, RoundingMode.HALF_DOWN).doubleValue() 22 }) 23 24 25 sqlContext.sql( 26 """ 27 |SELECT 28 | deptno, 29 | doubleValueFormat(AVG(sal), 2) AS avg_sal 30 |FROM hadoop09.emp 31 |GROUP BY deptno 32 """.stripMargin).show() 33 34 } 35 }
3.结果
二:知识点解释
1.udf
2.refister