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

      

  • 相关阅读:
    mysql 常用方法
    jquery input click取消默认事件
    Sprint Boot 集成mongodb
    MSSQL复习笔记
    H5(3)基础知识点补充
    H5(2) 前端基础知识点补充
    H5(1) h5的新特性
    用队列的方式实现日志
    Spring.Net的快速应用
    总结2016/展望2017
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9386162.html
Copyright © 2011-2022 走看看