Hive之自定义函数
1、系统内置函数
(1)查看系统自带的函数
show functions;
(2)显示自带的函数的用法
desc function upper;
(3)详细显示自带的函数的用法
desc function extended upper;
2、自定义函数
引入maven依赖
<dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.3.6</version>
</dependency>
自定义函数使用步骤(以UDF为例):
(1)继承org.apache.hadoop.hive.ql.exec.UDF实现 evaluate 函数(evaluate 可以重载)
(2)在hive命令行添加 jar
add jar linux_jar_path
(3)在hive命令行创建 function
create [temporary] function [dbname.]function_name AS class_name;
注意:创建的时候带有temporary表明只是在当前hive的会话session有效,关闭session后,自动删除函数
(4)在 hive 的命令行窗口删除函数
Drop [temporary] function [if exists] [dbname.]function_name;
用户自定义函数类别分为以下三种
(1)UDF(User-Defined-Function)
一进一出
注意:UDF 必须要有返回类型,可以返回 null,但是返回类型不能为 void
例:
public class LowerUDF extends UDF{/*** 将输入值变成小写格式* @param input* @return*/public String evaluate(String input){return input.toLowerCase();}/*** input变成小写后拼接上defaultV* @param input* @param defaultV* @return*/public String evaluate(String input,String defaultV){return input.toLowerCase()+defaultV;} }
在hive命令行添加 jar:
hive (test)> add jar /opt/temp/hive/Hadoop.jar;
Added [/opt/temp/hive/Hadoop.jar] to class path
Added resources: [/opt/temp/hive/Hadoop.jar]
在hive命令行创建 function
hive (test)> create temporary function lowerudf as "com.hive.udf.LowerUDF";
OK
Time taken: 0.057 seconds
在hive的sql中使用自定义函数
hive (test)> select lowerudf('ABC');
OK
_c0
abc
Time taken: 0.56 seconds, Fetched: 1 row(s)
hive (test)> select lowerudf('HELLO',' hive');
OK
_c0
hello hive
Time taken: 0.111 seconds, Fetched: 1 row(s)
(2)UDAF(User-Defined Aggregation Function)
聚集函数,多进一出
类似于:count/max/min
(3)UDTF(User-Defined Table-Generating Functions)
一进多出
如 lateral view explore()
例:
public class SplitUDTF extends GenericUDTF {private List<String> outList=new ArrayList<>();@Overridepublic StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {//1.定义输出数据的列名和类型List<String> fieldNames = new ArrayList<>();List<ObjectInspector> fieldOIs = new ArrayList<>();//2.添加输出数据的列名和类型fieldNames.add("lineToWord");fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames, fieldOIs);}@Overridepublic void process(Object[] args) throws HiveException {//1.获取原始数据String arg = args[0].toString();//2.获取数据传入的第二个参数,此处为分隔符String splitKey = args[1].toString();//3.将原始数据按照传入的分隔符进行切分String[] fields = arg.split(splitKey);//4.遍历切分后的结果,并写出for (String field : fields) {//集合为复用的,首先清空集合outList.clear();//将每一个单词添加至集合outList.add(field);//将集合内容写出forward(outList);}}@Overridepublic void close() throws HiveException {} }
hive (test)> add jar /opt/temp/hive/Hadoop.jar;
Added [/opt/temp/hive/Hadoop.jar] to class path
Added resources: [/opt/temp/hive/Hadoop.jar]
hive (test)> create temporary function splitudtf as 'com.hive.udtf.SplitUDTF';
OK
Time taken: 0.055 seconds
hive (test)> select splitudtf('hello,hive,java',',');
OK
linetoword
hello
hive
java
Time taken: 1.321 seconds, Fetched: 3 row(s)
Hive之自定义函数相关推荐
- Hadoop生态圈-hive编写自定义函数
Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)
Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnb ...
- hive udaf_Hive自定义函数
为什么需要自定义函数 hive的内置函数满足不了所有的业务需求. hive提供很多的模块可以自定义功能,比如:自定义函数.serde.输入输出格式等. 常见自定义函数UDF分三种: UDF(User ...
- Hive UDF自定义函数(临时和永久的区别)
Hive中虽然自带了一些函数,例如max().avg().sum()等,但有时候这些函数可能无法满足我们的需要,这时候就可以通过自定义UDF来进行扩展. 开发流程 UDF的开发流程基本有以下步骤: 继 ...
- hive的自定义函数以及自定义加密函数
hive对于敏感数据的加密还不够完善,现在开发一个udf函数,自己设置密钥(hive的加密函数等级比较低,也没有集成自己加密的密钥函数,所以自己开发一个),如果要加密一些数据则可以自己使用特定的密钥进 ...
- hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...
如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...
- Hive 自定义函数UDF入门
1.为什么要用自定义函数 1.1 hive的内置函数满足不了的业务需求,这时候就需要使用自定义函数 1.2 hive的自定义函数有那些 1.UDF 一对一输出输入(本章使用) 2.UDTF 一对多输 ...
- 2021年大数据Hive(八):Hive自定义函数
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...
- 学习笔记Hive(七)—— 自定义函数
一.自定义函数简介 1.1.函数类型 UDF:用户定义函数 UDF操作作用于单个数据行,并且产生一个数据行作为输出.大多数函数都属于这一类(比如数学函数和字符串函数) UDAF:用户定义聚集函数 UD ...
最新文章
- Ubuntu18.04 编译 ncnn
- .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?
- 如何添加显示桌面图标置于快速启动栏
- android+note2+分辨率,5.5英寸720p屏全新RGB像素排列_三星 GALAXY Note II_手机Android频道-中关村在线...
- 实现线段切割法_切割晶圆及玻璃产品的现代技术与设备
- getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析
- oracle查看有哪些数据库用户登录,oracle如何查看当前有哪些用户连接到数据库,oracle当前有...
- 【python 作日期的折线图和柱状图组合图】
- charles 批量重复请求/重复发包工具
- 高斯帕滑翔机枪matlab,高斯帕滑翔机枪的播种机这么做?
- Windows系统cmd命令窗口无法粘贴解决的方法步骤
- cropper.js 裁剪图片并上传(文档翻译+demo)(转)
- 设计师超爱用的六款软件
- matlab 画 带虚部,MATLAB1:求实部、虚部、模和幅角的运算
- TensorRT加速应用
- 大学英语四线上考试翻译题
- 一文通关苦涩难懂的Java泛型
- 购买的域名可以退款吗?域名购买后怎么删除?
- 公众号学生成绩管理查询系统
- 常州儿童学机器人编程_常州幼儿编程机器人