Hive 用户自定义函数UDF详解

2023-11-04

本例自定义一个Hive UDF函数,功能是将从Hive数据仓库查询出来的字符串进行大小写转换。

第一步,创建java工程,添加jar包。

Ø导入Hivelib目录下的jar包以及hadoop安装目录下的hadoop-core.jar

第二步,新建package包,包中新建java类,该类一定要继承org.apache.hadoop.hive.ql.exec.UDF类。

第三步,在继承了UDF类中实现evaluate函数,函数名必须是evaluate,可以重载多个evaluate方法。

如下图,evaluate函数第一个参数t对应着从数据库查询出来的某列的数据,第二个参数up_or_lower是依据函数的逻辑让用户在调用时指定的。

第四步,export  jar包,直接从eclipse工具中导出jar包,这步简单。

第五步,将jar包添加到linux操作系统下的文件系统中(我是在windows7中用eclipse创建java工程和导出jar包的,所以我使用了winscp工具(点击下载)从windows文件系统将jar包传送到linux文件系统,如果本身就是在linux系统下编写的java工程,就用不着这一步了)。

第六步,添加jar包到hive环境中。(三种方式,文末细讲)

第七部,创建临时函数供用户调用。

第八步,在查询语句中调用UDF函数。(六、七、八步如下图)

这里要注意的是如果是通过hive命令添加jar包到hive环境中,当要更新这个jar包时,要退出hive环境,再重新添加jar包。

附:向hive环境添加jar包的三种方法。(这部分转发自:http://www.linuxidc.com/Linux/2013-04/82879.htm

1.  使用add jar path/test.jar;方法加入

该方法的缺点是每次启动Hive的时候都要从新加入,退出hive就会失效。

2.  通过设置hive的配置文件hive-site.xml 加入

在配置文件中增加配置

<property>
<name>hive.aux.jars.path</name>
<value>file:///jarpath/all_new1.jar,file:///jarpath/all_new2.jar</value>
</property>

保存即可。

该方法比第一种方法方便很多。不需要每次启动Hive执行命令加入,只是配置稍微复杂一些。

3.  在${HIVE_HOME中创建文件夹auxlib  ,然后将自定义jar文件放入该文件夹中。

个人推荐这种方法,方便快捷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 用户自定义函数UDF详解 的相关文章

随机推荐

  • codeforces 851 #432 div2 C Five Dimensional Points

    Problem codeforces com contest 851 problem C Preference Codeforces Round 432 editorial Codeforces Round 432 Div 2 C Five
  • 华为OD机试 - 单词接龙(JS)

    题目描述 单词接龙的规则是 可用于接龙的单词首字母必须要前一个单词的尾字母相同 当存在多个首字母相同的单词时 取长度最长的单词 如果长度也相等 则取字典序最小的单词 已经参与接龙的单词不能重复使用 现给定一组全部由小写字母组成单词数组 并指
  • 6.5 Java, JDBC, and MySQL Types

    MySQL Connector J 在处理 MySQL 数据类型和 Java 数据类型之间的转换方面非常灵活 通常 任何 MySQL 数据类型都可以转换为 java lang String 任何数字类型都可以转换为任何 Java 数字类型
  • VTK编译笔记

    VTK 是一个用于计算机图形学 可视化和图像处理的开源 面对对象软件系统 准备工具 编译 VTK 需要以下工具 括号内是本例中使用的版本 VTK 源码包 https vtk org download 本例下载的是 VTK 9 2 0 rc1
  • 【工具】推荐一个开源小巧的pdf分析工具

    如何定位pdf的坐标 这是最近我遇到的问题 因为我需要把几个字类似水印通过java写到pdf上 搜了几个都说要用AcrobatCD软件 这个软件也下了但是发现并没有网格坐标的功能 不知道是不是要收费 还有就是gimp软件好像也能看pdf坐标
  • vue 发送ajax请求

    一 简介 1 vue本身不支持发送AJAX请求 需要使用vue resource vue1 0版本 axios vue2 0版本 等插件实现 2 axios是一个基于Promise的HTTP请求客户端 用来发送请求 也是vue2 0官方推荐
  • Functional Programming in Java venkat(15) Being Lazy part2

    Functional Programming in Java venkat 15 Being Lazy part2 这里是记录学习这本书 Functional Programming in Java Harnessing the Power
  • 双向可控硅

    转载于 http www baiheee com Documents 100830 100830085212 htm 双向可控硅是在单向可控硅的基础上发展起来的 顾名思义 它是 种具有双向导电特从外形上看双向可控硅和单向可控硅很相似 同样有
  • Qt绘制指针时钟

    Qt绘制指针时钟 什么是Qt Qt是一款跨平台的C 应用程序开发框架 它提供了一套完整的工具和库 可以帮助开发者快速构建高质量的应用程序 Qt支持多种操作系统和开发语言 包括Windows Linux macOS Android iOS等
  • spring boot学习(转)

    玩转Spring Boot 前言 首先在这里对Spring Boot做个简单的介绍 对Spring Boot也关注了挺久了 Spring Boot是由Pivotal团队提供的全新框架 Pivotal团队在2014年4月份发布第一个GA版本
  • SpringBoot学习笔记

    微服务阶段 JavaSE 面向对象 MySql JDBC 持久化存储 html css JavaScript Jquery 框架 视图 框架 JavaWeb 开始独立开发MVC三层架构的网站 原始 SSM 框架 简化了我们的开发流程 配置也
  • Lady General Hua Mu-lan花木兰剧本

    Lady General Hua Mu lan花木兰剧本 Gary专业版 Scene 0 Narrator N Oh come here little girl tell me do you want to become a woman a
  • 组件间通信方式

    方式一 props 适用于 父子组件间通信 1 父给子 父组件给子组件传递数据 非函数 本质其实是父组件 gt 子组件传递数据 父组件App vue
  • open/read/write和fopen/fread/fwrite的区别

    open read write和fopen fread fwrite的区别 open 系统调用 返回的是文件描述符 即文件句柄 是文件在文件描述副表里的索引 fopen C语言库函数 返回的是一个指向文件结构的指针 fopen是ANSI C
  • 进程之间为什么需要通信?

    进程是一个独立的资源分配单元 不同进程 这里所说的进程通常指的是用户进程 之间的资源是独立的 没有关联 不能在一个进程中直接访问另一个进程的资源 例如打开的文件描述符 但是 进程不是孤立的 不同的进程需要进行信息的交互和状态的传递等 因此需
  • 已解决io = ExcelFile(io,storage_options=storage.options, engine=engine)

    已解决 Python pandas read excel读取Excel文件报错 io ExcelFile io storage options storage options engine engine 文章目录 报错代码 报错原因 解决方
  • 渗透测试流程&信息收集

    渗透测试是一种评估方法 一种通过模拟黑客的攻击方式 来评估网站安全的方法 渗透测试流程分为7个阶段 信息收集 漏洞扫描 漏洞利用 内网转发 内网渗透 痕迹清除 编写报告 但在这7个阶段之前还有一个前提 就是授权 这个授权包括渗透测试的目标
  • Hbase Compaction 队列数量较大分析(压缩队列、刷新队列)

    前几天朋友公司Hbase集群出现Compaction队列持续处于比较大的情况 并且mem flush队列也比较大 一起看了下问题 大概情况如下图 从图中可以看出来压缩队列总和持续在1000 2000 平对压缩队列在200左右 刷新队列也比较
  • 三菱触摸屏怎么改时间_三菱plc的触摸屏程序,三菱触摸屏如何更改时间

    三菱plc的触摸屏程序 D8013D8014D8015D8016D8017D8018D8019秒 分钟 小时 日 月 年和周 假定上述时间需要改变 屏幕D10D11D12D13D14D15D16秒 分钟 天 月 年和周按钮M0程序LDM0设
  • Hive 用户自定义函数UDF详解

    本例自定义一个Hive UDF函数 功能是将从Hive数据仓库查询出来的字符串进行大小写转换 第一步 创建java工程 添加jar包 导入Hive的lib目录下的jar包以及hadoop安装目录下的hadoop core jar 第二步 新