2020.9.19hive函数和自定义UDF函数
目录
一、hive函数的使用
1.hive函数分类
2.字符函数
3.类型转换函数
4.数学函数
5.日期函数
6.集合函数
7.条件函数
8.聚合函数
9.表生成函数:输出可以作为表使用
二、UDF函数
1.先创建maven项目
2.继承UDF并重写evaluate()方法
3.生成jar包,并导入到linux系统目录下
4.打开hive
一、hive函数的使用
1.hive函数分类
2.字符函数
返回值
|
函数
|
描述
|
int
|
ascii(string str)
|
将字符转成ascii码
|
stirng
|
base64(binary bin)
|
返回二进制 bin 的 base 编码字符串
|
string
|
concat(string|binary A, string|binary B...)
|
对二进制字节码或字符串按次序进行拼接
|
string
|
concat_ws(string SEP, string A, string B...)
concat_ws(string SEP, array<string>)
|
返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符
返回将数组链接成字符串后的结果,SEP 表示各个字符串间的分隔符
|
string
|
format_number(number x, int d)
|
将数值 x 的小数位格式化成 d 位,四舍五入
|
int
|
instr(string str, string substr)
|
查找字符串str中子字符串substr出现的位置
|
int
|
length(string A)
|
返回字符串的长度
|
int
|
locate(string substr, string str[, int pos])
|
查找字符串str中的pos位置后字符串substr第一次出现的位置
|
string
|
printf(String format, Obj... args)
|
将指定对象用 format 格式进行格式化
|
map<String,string>
|
str_to_map(text[, delimiter1, delimiter2])
|
将字符串按照给定的分隔符转换成 map 结构.
|
binary
|
unbase64(string str)
|
将给定的 base64 字符串解码成二进制.
|
string
|
upper(string A) ucase(string A)
|
返回字符串 A 的大写格式
|
string
|
lower(string A) lcase(string A)
|
返回字符串 A 的小写格式
|
string
|
regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
|
按正则表达式PATTERN将字符串中符合条件的部分替换成REPLACEMENT所指定的字符串
|
string
|
regexp_extract(string subject, string pattern, intindex)
|
将字符串 subject 按照 pattern 正则表达式的规则拆分,返回 index
指定的字符。
|
array
|
split(string str, string pat)
|
按照正则表达式pat来分割字符串str
|
string
|
substr(string|binary A, int start, int len)
substring(string|binary A, int start, int len)
|
对字符串A,从start位置开始截取长度为len的字符串并返回
|
string
|
trim(string A)
|
将字符串A前后出现的空格去掉
|
string
|
ltrim(string A)/rtrim(string A)
|
去除字符串左边/右边的空格
|
binary
|
encode(string src, string charset)
|
用指定字符集charset将字符串编码成二进制值
|
3.类型转换函数
返回值
|
类型转换函数
|
描述
|
"type"
|
cast(expr as <type>)
|
将expr转换成type类型 如:cast("1" as BIGINT) 将字符串1转换成了BIGINT类型
|
binary
|
binary(string|binary)
|
将输入的值转换成二进制
|
4.数学函数
返回值
|
数学函数
|
描述
|
DOUBLE
|
round(DOUBLE a)
|
返回对a四舍五入的BIGINT值
|
binary
|
round(DOUBLE a, INT d)
|
返回对a四舍五入并保留d位小数位的值
|
BIGINT
|
floor(DOUBLE a)
|
向下取整,如:6.10->6 -3.4->-4
|
DOUBLE
|
rand(INT seed)
|
返回一个DOUBLE型随机数,seed是随机因子
|
DOUBLE
|
power(DOUBLE a, DOUBLE p)
|
计算a的p次幂
|
DOUBLE
|
abs(DOUBLE a)
|
计算a的绝对值
|
5.日期函数
返回值
|
函数
|
描述
|
string
|
from_unixtime(bigint unixtime[, string format])
|
将时间戳转换成format格式
|
int
|
unix_timestamp()
|
获取本地时区下的时间戳
|
bigint
|
unix_timestamp(string date)
|
将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成时间戳
|
string
|
to_date(string timestamp)
|
返回时间字符串的日期部分
|
int
|
year(string date)
month/day/hour/minute/second/weekofyear
|
返回时间字符串的年份部分
返回月/天/时/分/秒/第几周
|
int
|
datediff(string enddate, string startdate)
|
计算开始时间到结束时间相差的天数
|
string
|
date_add(string startdate, int days)
|
从开始时间startdate加上days
|
string
|
date_sub(string startdate, int days)
|
从开始时间startdate减去days
|
date
|
current_date
|
返回当前时间的日期
|
timestamp
|
current_timestamp
|
返回当前时间戳
|
string
|
date_format(date/timestamp/string ts, string fmt)
|
按指定格式返回时间date 如:date_format("2016-06-22","MM-dd")=06-22
|
6.集合函数
返回值
|
函数
|
描述
|
int
|
size(Map<K.V>)
|
返回map中键值对个数
|
int
|
size(Array<T>)
|
返回数组的长度
|
array<K>
|
map_keys(Map<K.V>)
|
返回map中的所有key
|
array<V>
|
map_values(Map<K.V>)
|
返回map中的所有value
|
boolean
|
array_contains(Array<T>, value)
|
如该数组Array<T>包含value返回true。,否则返回false
|
array
|
sort_array(Array<T>)
|
对数组进行排序
|
7.条件函数
返回值
|
函数
|
描述
|
T
|
if(boolean testCondition, T valueTrue, T valueFalseOrNull)
|
如果testCondition 为true就返回valueTrue,否则返回valueFalseOrNull
|
T
|
nvl(T value, T default_value)
|
value为NULL返回default_value,否则返回value
|
T
|
COALESCE(T v1, T v2, ...)
|
返回第一非null的值,如果全部都为NULL就返回NULL
|
T
|
CASE a WHEN b THEN c
[WHEN d THEN e]* [ELSE f] END
|
如果a=b就返回c,a=d就返回e,否则返回f
|
T
|
CASE WHEN a THEN b
[WHEN c THEN d]* [ELSE e] END
|
如果a=ture就返回b,c= ture就返回d,否则返回e
|
boolean
|
isnull( a )
|
如果a为null就返回true,否则返回false
|
boolean
|
isnotnull ( a )
|
如果a为非null就返回true,否则返回false
|
8.聚合函数
9.表生成函数:输出可以作为表使用
返回值
|
函数
|
描述
|
N rows
|
explode(array<T>)
|
对于array中的每个元素生成一行且包含该元素
|
N rows
|
explode(MAP)
|
每行对应每个map键值对
其中一个字段是map的键,另一个字段是map的值
|
N rows
|
posexplode(ARRAY)
|
与explode类似,不同的是还返回各元素在数组中的位置
|
N rows
|
stack(INT n, v_1, v_2, ..., v_k)
|
把k列转换成n行,每行有k/n个字段,其中n必须是常数
|
tuple
|
json_tuple(jsonStr, k1, k2, ...)
|
从一个JSON字符串中获取多个键并作为一个元组返回,与get_json_object不同的是此函数能一次获取多个键值
|
二、UDF函数
1.先创建maven项目
![](/assets/blank.gif)
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1.2.1</version></dependency>
![](/assets/blank.gif)
2.继承UDF并重写evaluate()方法
public class TestUDF {public Text evaluate(Text str){if(null==str){return null;}return new Text(str.toString().toUpperCase());
![](/assets/blank.gif)
3.生成jar包,并导入到linux系统目录下
![](/assets/blank.gif)
4.打开hive
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
2020.9.19hive函数和自定义UDF函数相关推荐
- Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
函数 系统内置函数 1.查看系统自带的函数 show functuions; 2.显示自带的函数的用法 desc function month; 3.详细显示自带的函数的用法 desc functio ...
- 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 ...
- java调mongodb自定义函数,自定义UDF函数,从hive保存到mongodb
(可以通过idea工具调试UDF函数,第二步中会提供参考) 一.自定义UDF函数: 1.首先是pom.xml文件 xmlns:xsi="http://www.w3.org/2001/XMLS ...
- sprk sql自定义UDF函数
1 自定义UDF函数与scala定义函数的方式是一样的(也可以定义方法,调用的时候转换为函数即可) 2 自定义的函数需要注册后才能使用,注册的方式为 session.udf.register(自定义名 ...
- hive 转拼音udf_自定义UDF函数:将汉字转换成拼音
工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...
- 自定义UDF函数:将汉字转换成拼音
工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...
- 自定义UDF函数和UDTF函数
文章目录 1.创建maven项目,引入依赖 2.自定义函数 自定义UDF函数 自定义UDTF函数 hive调用jar包创造函数 方法1:上传到linux下导入hive 方法2:上传到hdfs上再导入h ...
- HIVE自定义UDF函数-经纬度转换成省市地址
目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...
- Hive 自定义UDF函数讲解
目录 一.UDF描述 二.UDF种类 三.自定义实现UDF和UDTF 3.1 需求 3.2 项目pom文件 3.3 Hive建表测试及数据 3.4UDF函数编写 3.5 UDTF函数编写 四:添加到h ...
- 5、Hive的自定义UDF函数
2019独角兽企业重金招聘Python工程师标准>>> 1.pom.xml引入依赖及打包 <dependencies><dependency><grou ...
最新文章
- 逆向-攻防世界-maze
- java类的两个基本成分_Java类文件的基本结构
- 既然有 GC 机制,为什么还会有内存泄露的情况
- oracle24550,ORA-24550 Signal Received Error From Client Based Application
- OpenGL之仿“天体”运动渲染球体之间的旋转效果
- Jenkins入门指南
- 进退之间,一位29岁已婚女性的自由之路
- 阿里“去 IOE”十二年,弹性计算如何二次去 I 和 E?
- 如何成为一名AI人工智能算法工程师?
- matlab dlt标定,实验三 Matlab图像处理基本操作及摄像机标定(DLT)
- 二十三种设计模式之工厂模式(含Java工厂模式的实现)
- 安全产品的部署方式及位置
- 2021-11-24【数据结构练习题】【二叉搜索树的插入删除】
- 旅行路线可视化研究与实现(Java+Android+Eclipse实现的旅游APP)
- selenium高级自动化编程
- ChatGPT原理解析以及使用方法介绍
- 【Unity 3D 从入门到实战】Unity 3D 导航系统
- PowerBuilder DeCompiler(PB DeCompiler) Demo download(PB反编译,支持5-12)
- surf算法原理-包你明白surf过程
- jbd2 dm 0 8 mysql_在jbd2 / dm-0-8上的CentOS6和长等待IO时间