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

      

  • 相关阅读:
    忍者X3 链接统计工具
    新版淘宝客广告生成器发布
    今天编写了淘宝客生成工具
    淘宝客appkey做了大范围的取消、查封
    DiscuzX3.0 发布插件
    网易博客营销插件
    [转]iOS 应用程序的生命周期
    [转]Xcode的快捷键及代码格式化
    OC——关于KVO
    OC——关于KVC
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9386162.html
Copyright © 2011-2022 走看看