一:程序部分
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 |SELECT28 | deptno,29 | doubleValueFormat(AVG(sal), 2) AS avg_sal30 |FROM hadoop09.emp31 |GROUP BY deptno32 """.stripMargin).show()33 34 }35 }
3.结果
二:知识点解释
1.udf
2.refister