zoukankan      html  css  js  c++  java
  • 047 SparkSQL自定义UDF函数

    一:程序部分

    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

      

  • 相关阅读:
    第三周java学习总结
    第一周Java学习总结
    关闭窗体
    乱七八糟
    网页游戏资料
    timer控件的使用
    spread 签套循环改变颜色编号为颜色
    限制输入‘号的代码
    SQlcharindex命令
    限制输入类型
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9386162.html
Copyright © 2011-2022 走看看