hive的基础函数>>日期函数,字符串函数,杂项函数

查看函数的功能

复制代码
DESCRIBE FUNCTION 函数名;

返回: 函数名和函数使用方法

复制代码
DESCRIBE FUNCTION EXTENDED 函数名;

返回: 函数名, 函数使用方法 和示例

日期函数

默认日期格式

yyyy-MM-dd hh24:mm:ss

  • y:表示年份

  • M:表示月份,注意是大写的

  • d:表示天

  • h:表示小时

  • m:表示分钟,注意是小写的

  • s:表示秒钟

获取系统当前时间
复制代码
select current_date

current_date 表示hive系统当前日期, 不含时间

current_timestamp() 表示系统当前时间, 包括**日期和时间,**属于时间戳, 即秒后面包含小数点

unix_timestamp() 表示unix风格的时间戳, 是一串数字; 数字表示从计算机元年(1970-01-01),到当前时间所进过的秒数

日期格式转换

将unix风格的时间戳转换成 日期时间

from_unixtime() 函数, 默认按照 Hive中的默认日期格式进行转换

复制代码
select from_unixtime(unix_timestamp());

将字符串转换成 unix时间戳

unix_timestamp(str,format)

示例

复制代码
select unix_timestamp('2014-02-02','yyyy-MM-dd');

select unix_timestamp('20140202','yyyyMMdd');

字符串转换成标准的日期格式

复制代码
select from_unixtime(unix_timestamp('20140202','yyyyMMdd'));

日期的计算

天数差 datediff(date1,date2)

复制代码
select datediff('2014-02-02','2013-10-11');   -- 114

增加天数 date_add(date, num)

减少天数 date_sub(date, num)

增加/减少月份 add_months(date, num)

num > 0,增加月份; num < 0 减少月份

复制代码
select add_months('2014-02-02',2);

两个日期之间的月份差 months_between(date1, date2)

获取日期中的年、月、日, Hive中没有 to_char 函数,

-- 需要使用 year(), month(), day(), hour(), minute(), second() 获取

复制代码
select year('2014-02-02');

-- 也可以使用截断函数进行内容的截取

复制代码
select substring('2014-02-02',1,4);

字符串函数

字符串连接函数

concat(str1, str2, ... strN)

复制代码
select concat("angela","baby");

Oracle和Hive中的CONCAT函数的区别

带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)

concat_ws 即 Concatenate With Separator

-- 可以将多个字符串拼接成一个整体, 内容之间使用指定的符号进行分隔

复制代码
select concat_ws(',', '111', '222', '333');

-- 数组元素拼接示例

复制代码
SELECT concat_ws(',', array('111', '222', '333'));

select concat_ws('-', array('1','2','3','4'));

重复字符串函数:repeat(str, n) 重复str字符串n次

用于生成重复的字符串

复制代码
select repeat("angela",2);

分割字符串函数: split(str, regex)

复制代码
select split('apache-hive', '-');

返回结果: 数组 ["apache","hive"]

字符串长度函数 length(str)

复制代码
select length("angelababy");

字符串反转函数:reverse

复制代码
select reverse("angelababy");

返回结果 "ybabylanega"

字符串截取函数:substr(str, pos[, len]) 或者 substring(str, pos[, len])

复制代码
select substr("angelababy",-2);

pos为负数时, 从右边开始截取, 返回 "by"

复制代码
SELECT substr("angelababy", -2, 3);   

从右边开始的第二个字符是"b" ,截取3个字符是"by", 因此返回"by"

字符串转大写函数:upper,ucase

复制代码
select upper("angelababy");
select ucase("angelababy");

字符串转小写函数:lower,lcase

复制代码
select lower("ANGELABABY");
select lcase("ANGELABABY");

去空格函数:trim 去除左右两边的空格

复制代码
select trim(" angelababy ");

左边去空格函数:ltrim

右边去空格函数:rtrim

正则表达式替换函数:regexp_replace(str, regexp, rep)

三个参数:str(要进行替换的字符串),regexp(正则表达式),和rep(用于替换匹配到的字符串)。它返回一个新的字符串,其中所有匹配正则表达式的子串都被替换为指定的字符串

复制代码
SELECT regexp_replace('100-200', '(\\d+)', 'num');

正则表达式 (\\d+) 匹配一个或多个数字。函数会将这些匹配的部分替换为字符串 'num'

返回 "num-num"

正则表达式解析函数:regexp_extract(str, regexp[, idx]) 提取正则匹配到的指定组内容

复制代码
select regexp_extract('100-200', '(\\d+)-(\\d+)', 2);

URL解析函数:parse_url 注意要想一次解析出多个 可以使用parse_url_tuple这个UDTF函数

复制代码
select parse_url('http://www.itcast.cn/path/p1.php?query=1', 'HOST');

想要提取的是主机名(即域名)。因此,这个查询将返回 URL http://www.itcast.cn/path/p1.php?query=1 的主机名部分,即:

www.itcast.cn

json解析函数:get_json_object

空格字符串函数:space(n) 返回指定个数空格

复制代码
select space(4);

首字符ascii函数:ascii

复制代码
select ascii("angela");

左补足函数:lpad

l 即left

复制代码
select lpad('hi', 5, '??');

返回"???hi"

复制代码
select lpad('hi', 1, '??');

由于指定的长度为1,小于字符串 'hi' 的实际长度2,因此在Hive中,这个函数会返回原始字符串本身,即 'hi'

--右补足函数:rpad

r即right

复制代码
select rpad('hi', 5, '??');

返回 "hi???"

集合查找函数: find_in_set(str,str_array)

复制代码
select find_in_set('a','abc,b,ab,c,def');

杂项函数

取哈希值函数:hash

复制代码
select hash("allen");

这将返回字符串 "allen" 的哈希值。具体返回的值取决于Hive中使用的哈希算法。

SHA-1加密: sha1(string/binary)

SHA-1(Secure Hash Algorithm 1)是一种加密哈希函数,它可以产生一个160位(20字节)的哈希值,通常用一个40位的十六进制字符串表示。

复制代码
select sha1("allen");

SHA-2(Secure Hash Algorithm 2)是一系列加密哈希函数,它包括多个不同的变体,如 SHA-224、SHA-256、SHA-384 和 SHA-512,它们分别产生不同长度的哈希值。

crc32

是一种用于生成数据校验和(checksum)的哈希函数。CRC32(循环冗余校验32位)是一种广泛使用的哈希算法,用于检测数据传输或存储过程中的错误。它生成一个32位(4字节)的校验值,通常用于文件完整性检查和网络通信中。

"Cyclic"(循环)指的是在进行CRC计算时,数据被视为一个大的多项式,而生成多项式(polynomial)是这个多项式的一个因子。计算过程中,这个多项式会循环地与数据进行除法运算。

"Redundancy"(冗余)指的是在数据中添加额外的信息,这些信息用于校验数据的完整性。在CRC中,这些额外的信息就是CRC校验值,它被附加在数据的末尾。

"Check"(校验)指的是使用CRC值来验证数据的完整性。如果在数据传输或存储过程中发生错误,重新计算的CRC值将与原始CRC值不匹配,从而可以检测到错误。

MD5加密: md5(string/binary)

复制代码
select md5("allen");

会将任意长度的输入数据转换为一个固定长度(128位,通常表示为32个十六进制字符)的哈希值

"MD"代表"Message-Digest",即"消息摘要"

取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数

复制代码
select rand();
相关推荐
Eternity......21 分钟前
spark和hadoop的区别
大数据·hadoop·spark
2401_8712905825 分钟前
spark和Hadoop之间的对比和联系
大数据·hadoop·spark
lqlj22333 小时前
spark和hadoop的对比和联系
大数据·hadoop·spark
睎zyl3 小时前
Spark与Hadoop之间的联系和对比
大数据·hadoop·spark
小白的白是白痴的白4 小时前
4.21 spark和hadoop的区别与联系
大数据·hadoop·spark
哈哈真棒4 小时前
spark和Hadoop的区别与联系
大数据·hadoop·spark
RestCloud5 小时前
2025年五大ETL数据集成工具推荐
数据仓库·etl·数字化转型·数据集成·数据集成平台·informatica·talend
哈哈la5 小时前
spark和hadoop的区别
大数据·hadoop·spark
CONTONUE5 小时前
spark和Hadoop的区别和联系
hadoop·spark
IT成长日记5 小时前
【Hive入门】Hive架构与组件深度解析:从核心组件到生态协同
hive·hadoop·架构·架构与组件