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之自定义函数相关推荐

  1. Hadoop生态圈-hive编写自定义函数

    Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  2. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)

    Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnb ...

  3. hive udaf_Hive自定义函数

    为什么需要自定义函数 hive的内置函数满足不了所有的业务需求. hive提供很多的模块可以自定义功能,比如:自定义函数.serde.输入输出格式等. 常见自定义函数UDF分三种: UDF(User ...

  4. Hive UDF自定义函数(临时和永久的区别)

    Hive中虽然自带了一些函数,例如max().avg().sum()等,但有时候这些函数可能无法满足我们的需要,这时候就可以通过自定义UDF来进行扩展. 开发流程 UDF的开发流程基本有以下步骤: 继 ...

  5. hive的自定义函数以及自定义加密函数

    hive对于敏感数据的加密还不够完善,现在开发一个udf函数,自己设置密钥(hive的加密函数等级比较低,也没有集成自己加密的密钥函数,所以自己开发一个),如果要加密一些数据则可以自己使用特定的密钥进 ...

  6. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  7. Hive 自定义函数UDF入门

    1.为什么要用自定义函数 1.1 hive的内置函数满足不了的业务需求,这时候就需要使用自定义函数 1.2 hive的自定义函数有那些 1.UDF  一对一输出输入(本章使用) 2.UDTF 一对多输 ...

  8. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  9. 学习笔记Hive(七)—— 自定义函数

    一.自定义函数简介 1.1.函数类型 UDF:用户定义函数 UDF操作作用于单个数据行,并且产生一个数据行作为输出.大多数函数都属于这一类(比如数学函数和字符串函数) UDAF:用户定义聚集函数 UD ...

最新文章

  1. Ubuntu18.04 编译 ncnn
  2. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?
  3. 如何添加显示桌面图标置于快速启动栏
  4. android+note2+分辨率,5.5英寸720p屏全新RGB像素排列_三星 GALAXY Note II_手机Android频道-中关村在线...
  5. 实现线段切割法_切割晶圆及玻璃产品的现代技术与设备
  6. getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析
  7. oracle查看有哪些数据库用户登录,oracle如何查看当前有哪些用户连接到数据库,oracle当前有...
  8. 【python 作日期的折线图和柱状图组合图】
  9. charles 批量重复请求/重复发包工具
  10. 高斯帕滑翔机枪matlab,高斯帕滑翔机枪的播种机这么做?
  11. Windows系统cmd命令窗口无法粘贴解决的方法步骤
  12. cropper.js 裁剪图片并上传(文档翻译+demo)(转)
  13. 设计师超爱用的六款软件
  14. matlab 画 带虚部,MATLAB1:求实部、虚部、模和幅角的运算
  15. TensorRT加速应用
  16. 大学英语四线上考试翻译题
  17. 一文通关苦涩难懂的Java泛型
  18. 购买的域名可以退款吗?域名购买后怎么删除?
  19. 公众号学生成绩管理查询系统
  20. 常州儿童学机器人编程_常州幼儿编程机器人

热门文章

  1. AGM AG1280 CPLD
  2. linux tomcat定时重启服务
  3. 两个栈实现队列——优化版
  4. 使用vsc写node遇到缺少 对象
  5. 最新!U.S. News发布2022世界大学排名清华亚洲排第一;瑞吉品牌计划五年内全球度假酒店数量翻倍 | 美通社头条...
  6. 通用定时器输入捕获实验
  7. javascript hasOwnProperty
  8. Oracle Spacial(空间数据库)查询空间数据2
  9. 技术出身的怎样渡过中年危机
  10. CC(标准)版D碟收藏指南(一)