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函数相关推荐

  1. matlab的数学函数,matlab中常见数学函数的使用

    matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...

  2. mysql数学函数名_MYSQL 常见数学函数说明

    摘要: 下文讲述MySQL常见数学函数的说明,如下所示: mysql > select round(2.34); +-------------+ | round(2.34) | +------- ...

  3. php 数组函数特点,php常见数组函数

    (1)array_rand(array,number) //number指定返回随机( 键名 )的多少 $a=array("a"=>"red"," ...

  4. 【若泽大数据实战第十九天】Hive 函数UDF开发以及永久注册udf函数

    前言: 回顾上期课程,上次课我们讲了聚合函数,多进一出, 分组函数  group by,出现在select里面的字段除了分组函数之外,其他都要出现在group by里面,分组函数的过滤必须使用hivi ...

  5. Hive 函数UDF开发以及永久注册UDF函数

    explode: (把一串数据转换成多行的数据) 创建一个文本: [hadoop@ruozehadoop000 data]$ vi hive-wc.txt hello,world,welcome he ...

  6. 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 ...

  7. udf开发入门(python udf、hive udf)

    开发前的声明         udf开发是在数据分析的时候如果内置的函数解析不了的情况下去做的开发,比方说你只想拆分一个字段,拼接一个字段之类的,就不要去搞udf了,这种基本的需求自带函数完全支持,具 ...

  8. hive 常见的函数

    hive函数之数学函数 round(double d)--返回double型d的近似值(四舍五入),返回bigint型: round(double d,int n)--返回保留double型d的n位小 ...

  9. Hive 中的复合数据结构简介以及一些函数的用法说明

    目前 hive 支持的复合数据类型有以下几种: map (key1, value1, key2, value2, ...) Creates a map with the given key/value ...

最新文章

  1. 帝国备份语法错误问题
  2. mysql需要下载调试_Mysql安装和调试
  3. SAP ABAP 中一些常用函数
  4. android ,动态布局 butterknife,与Butterknife绑定在android中动态添加视图
  5. 计算机网络-基本概念(5)【网络层】-IP多播
  6. 挖矿为什么要用显卡_Eth2拉开序幕,为何显卡大户却在加码挖矿?
  7. 彻底解决Spring MVC 中文乱码 问题
  8. python并发运行
  9. [恢]hdu 2186
  10. ORA-28056:Writing audit records to Windows EventLog failed的问题
  11. 【转】:localStorage使用总结
  12. 【电子技术实验设计】简易水位控制器设计报告
  13. html——页面内跳转
  14. 蓄电池充电方法和一张原理图
  15. java gc 监控_JAVA网站full GC监控脚本
  16. 2020你必须掌握的CSS特效~建议收藏
  17. 详解HTTP协议(二)
  18. 如何制作一份优秀的简历?
  19. 即使有一天没有属于我的天,我也要一步一步往上爬
  20. 课时10:列表:一个打了激素的数组1

热门文章

  1. 小功率恒流源芯片推荐
  2. java 中long型数据的对比
  3. 基于激光雷达实现三边定位算法开发记录(五)——三角函数法拟定圆心
  4. 数字信号处理:视频-15-FFT计算线性卷积
  5. 不同类型时钟CLK信号波形的产生、与时钟频率的关系
  6. Java并发工具Exchanger线程间交换数据
  7. 信号系统matlab实例3——卷积的matlab求解
  8. STM32学习笔记(三)——外部中断的使用
  9. python循环遍历-for循环
  10. HTTP协议个人总结