1 自定义UDF函数与scala定义函数的方式是一样的(也可以定义方法,调用的时候转换为函数即可)

2 自定义的函数需要注册后才能使用,注册的方式为 session.udf.register(自定义名称, 需注册的方法名). 其中Session为SparkSession对象.

自定义一个统计字符串长度的函数

object UserDefineFunction extends App {private val session: SparkSession = SparkSession.builder().appName("test").master("local").getOrCreate()private val frame: DataFrame = session.read.json("file:///D:\\SparkSql\\data\\emp.json")//维护一张临时表frame.createTempView("emp")//定义一个自定义函数val getLength = (str: String) => str.length//注册自定义的函数,两个参数,可以重新起一个名字session.udf.register("myLength", getLength)val sql ="""|select ename,|myLength(ename)|from emp|""".stripMargin//执行sqlsession.sql(sql).show()session.stop()
}

自定义一个依据sal进行区分等级的函数

object UserDefineFunction2 extends App {private val session: SparkSession = SparkSession.builder().appName("test").master("local").getOrCreate()//读取json数据转为DF对象private val frame: DataFrame = session.read.json("file:///D:\\git\\data\\emp.json")
//创建临时表frame.createTempView("emp")//注册自定义函数,第一个参数为自定义名称,第二个参数为函数,因为是方法,所以需要用_转为函数. 下划线与方法名之间用一个空格分隔session.udf.register("getLevel", getLevel _)
//调用自定义函数getLevelval sql ="""|select ename,|job,|sal,|getLevel(sal) as level|from emp|""".stripMargin
//执行sqlsession.sql(sql).show()session.stop()
//定义自定义方法,调用时候可以转为函数. 需要一个参数,调用时可以传入df的一个字段def getLevel(sal: Int): String = {if (sal > 3000) "level 1"else if (sal > 1500) "level 2"else "level 3"}
}

运行结果

+------+---------+------+-------+
| ename|      job|   sal|  level|
+------+---------+------+-------+
| SMITH|    CLERK| 800.0|level 3|
| ALLEN| SALESMAN|1600.5|level 2|
|  WARD| SALESMAN|1250.0|level 3|
| JONES|  MANAGER|2975.0|level 2|
|MARTIN| SALESMAN|1250.0|level 3|
| BLAKE|  MANAGER|2850.0|level 2|
| CLARK|  MANAGER|2450.0|level 2|
| SCOTT|  ANALYST|3000.0|level 2|
|  KING|PRESIDENT|5000.0|level 1|
|TURNER| SALESMAN|1500.0|level 3|
| ADAMS|    CLERK|1100.0|level 3|
| JAMES|    CLERK| 950.0|level 3|
|  FORD|  ANALYST|3000.0|level 2|
|MILLER|    CLERK|1300.0|level 3|
+------+---------+------+-------+

sprk sql自定义UDF函数相关推荐

  1. spark sql自定义UDF函数-java语言

    背景说明 基于spark sql开发过程中,需要一些类似与官网提供的 int().from_json()等自定函数处理数据.下属将简单讲解通过java如何实现spark sql自定义函数 官方UDF接 ...

  2. java调mongodb自定义函数,自定义UDF函数,从hive保存到mongodb

    (可以通过idea工具调试UDF函数,第二步中会提供参考) 一.自定义UDF函数: 1.首先是pom.xml文件 xmlns:xsi="http://www.w3.org/2001/XMLS ...

  3. Hive _函数(系统内置函数、自定义函数、自定义UDF函数)

    函数 系统内置函数 1.查看系统自带的函数 show functuions; 2.显示自带的函数的用法 desc function month; 3.详细显示自带的函数的用法 desc functio ...

  4. hive 转拼音udf_自定义UDF函数:将汉字转换成拼音

    工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  5. 自定义UDF函数:将汉字转换成拼音

    工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  6. 自定义UDF函数和UDTF函数

    文章目录 1.创建maven项目,引入依赖 2.自定义函数 自定义UDF函数 自定义UDTF函数 hive调用jar包创造函数 方法1:上传到linux下导入hive 方法2:上传到hdfs上再导入h ...

  7. HIVE自定义UDF函数-经纬度转换成省市地址

    目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...

  8. 8.Hive基础—函数—系统内置函数、常用内置函数、自定义函数、自定义UDF函数、自定义UDTF函数

    本文目录如下: 第8章 函数 8.1 系统内置函数 8.2 常用内置函数 8.2.1 空字段赋值 8.2.2 CASE WHEN THEN ELSE END 8.2.3 行转列 8.2.4 列转行 8 ...

  9. Hive 自定义UDF函数讲解

    目录 一.UDF描述 二.UDF种类 三.自定义实现UDF和UDTF 3.1 需求 3.2 项目pom文件 3.3 Hive建表测试及数据 3.4UDF函数编写 3.5 UDTF函数编写 四:添加到h ...

最新文章

  1. 数字信号处理中的自相关和互相关计算和物理意义(一)
  2. Hystrix的应用案例:多短信供应商的自动切换与恢复
  3. Python Django 通过admin后台创建表数据
  4. nginx+keepalived搭建主从负载均衡并迅速切换
  5. python压缩教程_Python压缩模块zipfile实现原理及用法解析
  6. mysql 语句中的national 、 comment
  7. 技术栈是什么_我从找不到实习到拿大厂offer经历了什么?
  8. 微软Windows 10警告用户不要安装下载CCleaner,认为CCleaner是潜在危险软件(2020激活码序列号秘钥)
  9. sqlite数据库保存聊天记录
  10. list.php tid= field,DEDE5.7手机移动版实现与PC电脑版静态地址url一致教程(含伪静态规则) | 八戒哥技术博客...
  11. Fluentd日志采集使用教程
  12. E430 加装固态硬盘(SSD)参考
  13. R语言ggplot2 | 如何自定义facet分面的坐标轴范围
  14. 黑马程序员JS学习第一天
  15. clamped b_spline
  16. 【UML之宏观了解】
  17. vscode 配置ts自动转换成js文件
  18. Win11安装cad缺少net组件怎么办?
  19. python matplotlib 显示中文的问题
  20. Wireshark抓包实例诊断TCP连接问题

热门文章

  1. jsecharts如何改变占比_沪苏通铁路通车2个月,对海门人的生活改变了吗?
  2. hdfs java操作_hdfs java操作
  3. 计算机round是什么函数,round函数
  4. inno setup 环境变量 立即生效_CentOS7设置环境变量
  5. eclipse jdk配置_第一节:学会Java前提-手把手教你配置JDK环境变量
  6. wordpress虚拟服务器,西部数码虚拟主机安装wordpress教程
  7. linux轮训创建文件夹,Linux文件和目录管理相关命令(三)
  8. python提供了两种基本的数值类型_Python 基本数据类型
  9. mysql 核心笔记 逻辑符号 like
  10. css表格强制不换行符,css控制table单元格强制换行与强制不换行