hive的UDF函数的使用。常见UDF函数
UDF的话一般是hive提供的函数功能满足不了业务需要,我们就会自己来写UDF函数来辅助完成,对于我们常用的函数而言还是哪些常见的聚合函数,如:count、sum、avg、max、min等,其他的话就要切合我们的需求来进行使用了,不过一般较为常用的有
1.cast(expr as <type>)
可以做: cast('1' as BIGINT) 字符串转换为数字
2、if语句
if(boolean testCondition, T valueTrue, T valueFalseOrNull)
如果 testCondition 为 true 返回 valueTrue, 否则返回 valueFalse 或 Null
如: if(1 == 1, 1, 2) 结果为1
3、case语句
CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
如:case when a == b then b when a == c then c else d end
4、字符串连接
concat(string1, string2, ...)
如:concat('hello', ' word') 结果为 hello word
5、计算字符串长度
length(string)
如:length('hello') 结果为5
6、查找子串的位置
locate(string substr, string str[, int pos])
如:locate('%', '100%') 返回3
7、聚合某一列数据
collect_set(col) 会去重
collect_list(col) 不会去重
如何构建UDF?
用户构建的UDF使用过程如下:
第一步:继承UDF或者UDAF或者UDTF,实现特定的方法。
第二步:将写好的类打包为jar。如hivefirst.jar.
第三步:进入到Hive外壳环境中,利用add jar /home/hadoop/hivefirst.jar.注册该jar文件
第四步:为该类起一个别名,create temporary function mylength as 'com.whut.StringLength';这里注意UDF只是为这个Hive会话临时定义的。
第五步:在select中使用mylength();
结合项目中使用
问题
hive无法按照5分钟对日志分组
方案
hive UDF
实现步骤
创建UDF:①extends UDF ②重写evaluate方法
Java代码 收藏代码
package com.xxx.udf;
import java.math.BigDecimal;
import org.apache.hadoop.hive.ql.exec.UDF;
public class UDFTrunc5min extends UDF {
/**
* truncate 5 minute
*
* @param timestamp "1312128177.364"
* @return
*/
public String evaluate(String timestamp) {
try {
return new BigDecimal(timestamp).multiply(new BigDecimal("1000")).longValue() / 300000 * 300000 + "";
} catch (Exception e) {
return null;
}
}
}
将udf打jar包,并上传到hive server上
运行hive cli,执行如下命令:
Java代码 收藏代码
<span style="font-weight: normal;">#添加udf jar
add jar /xxxx/xxx/my_udf.jar;
#创建临时函数,临时函数,每次打开cli都需要创建function
#如果是系统常用的函数可以发布到hive-exec项目,稍后介绍
create temporary function t5m as 'com.xx.udf.Trunc5min';
#使用udf
select t5m(time) from log group by t5m(time);</span>
hive的UDF函数的使用。常见UDF函数相关推荐
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- mysql数学函数名_MYSQL 常见数学函数说明
摘要: 下文讲述MySQL常见数学函数的说明,如下所示: mysql > select round(2.34); +-------------+ | round(2.34) | +------- ...
- php 数组函数特点,php常见数组函数
(1)array_rand(array,number) //number指定返回随机( 键名 )的多少 $a=array("a"=>"red"," ...
- 【若泽大数据实战第十九天】Hive 函数UDF开发以及永久注册udf函数
前言: 回顾上期课程,上次课我们讲了聚合函数,多进一出, 分组函数 group by,出现在select里面的字段除了分组函数之外,其他都要出现在group by里面,分组函数的过滤必须使用hivi ...
- Hive 函数UDF开发以及永久注册UDF函数
explode: (把一串数据转换成多行的数据) 创建一个文本: [hadoop@ruozehadoop000 data]$ vi hive-wc.txt hello,world,welcome he ...
- 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 ...
- udf开发入门(python udf、hive udf)
开发前的声明 udf开发是在数据分析的时候如果内置的函数解析不了的情况下去做的开发,比方说你只想拆分一个字段,拼接一个字段之类的,就不要去搞udf了,这种基本的需求自带函数完全支持,具 ...
- hive 常见的函数
hive函数之数学函数 round(double d)--返回double型d的近似值(四舍五入),返回bigint型: round(double d,int n)--返回保留double型d的n位小 ...
- Hive 中的复合数据结构简介以及一些函数的用法说明
目前 hive 支持的复合数据类型有以下几种: map (key1, value1, key2, value2, ...) Creates a map with the given key/value ...
最新文章
- 帝国备份语法错误问题
- mysql需要下载调试_Mysql安装和调试
- SAP ABAP 中一些常用函数
- android ,动态布局 butterknife,与Butterknife绑定在android中动态添加视图
- 计算机网络-基本概念(5)【网络层】-IP多播
- 挖矿为什么要用显卡_Eth2拉开序幕,为何显卡大户却在加码挖矿?
- 彻底解决Spring MVC 中文乱码 问题
- python并发运行
- [恢]hdu 2186
- ORA-28056:Writing audit records to Windows EventLog failed的问题
- 【转】:localStorage使用总结
- 【电子技术实验设计】简易水位控制器设计报告
- html——页面内跳转
- 蓄电池充电方法和一张原理图
- java gc 监控_JAVA网站full GC监控脚本
- 2020你必须掌握的CSS特效~建议收藏
- 详解HTTP协议(二)
- 如何制作一份优秀的简历?
- 即使有一天没有属于我的天,我也要一步一步往上爬
- 课时10:列表:一个打了激素的数组1