Hive常用函数

常用函数

查询具体函数
desc function 方法名;
常用日期函数

unix_timestamp:返回当前或指定时间的时间戳

hive (default)> select unix_timestamp();
unix_timestamp(void) is deprecated. Use current_timestamp instead.
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
_c0
1628144062
Time taken: 0.192 seconds, Fetched: 1 row(s)

from_unixtime:将时间戳转为日期格式

hive (default)> select from_unixtime(1628143897,"yyyy-mm-dd");
OK
_c0
2021-11-05
Time taken: 0.156 seconds, Fetched: 1 row(s)

current_date:当前日期(可以去括号)

hive (default)> select current_date();
OK
_c0
2021-08-05
Time taken: 0.143 seconds, Fetched: 1 row(s)

current_timestamp:当前的日期加时间

hive (default)> select current_timestamp;
OK
_c0
2021-08-05 14:21:29.1
Time taken: 0.157 seconds, Fetched: 1 row(s)
hive (default)> select current_timestamp();
OK
_c0
2021-08-05 14:21:31.947
Time taken: 0.151 seconds, Fetched: 1 row(s)

to_date:抽取日期部分

hive (default)> select to_date(current_timestamp);
OK
_c0
2021-08-05
Time taken: 0.135 seconds, Fetched: 1 row(s)

year:获取年

hive (default)> select year(current_timestamp);
OK
_c0
2021
Time taken: 0.247 seconds, Fetched: 1 row(s)

month:获取月
day:获取日
hour:获取时
minute:获取分
second:获取秒

weekofyear:当前时间是一年中的第几周

hive (default)> select weekofyear(current_timestamp);
OK
_c0
31
Time taken: 0.178 seconds, Fetched: 1 row(s)

dayofmonth:当前时间是一个月中的第几天

hive (default)> select dayofmonth(current_timestamp);
OK
_c0
5
Time taken: 0.147 seconds, Fetched: 1 row(s)

months_between: 两个日期间的月份

hive (default)> select months_between(current_timestamp,current_timestamp);
OK
_c0
0.0
Time taken: 0.152 seconds, Fetched: 1 row(s)
hive (default)> select current_timestamp;
OK
_c0
2021-08-05 14:28:32.471
Time taken: 0.117 seconds, Fetched: 1 row(s)
hive (default)> select months_between(current_timestamp,"2021-01-01");
OK
_c0
7.14849276
Time taken: 0.155 seconds, Fetched: 1 row(s)
hive (default)> select months_between(current_timestamp,"2021-01-21");
OK
_c0
6.50333744
Time taken: 0.138 seconds, Fetched: 1 row(s)
hive (default)> 

add_months:日期加减月

//add_months(start_date, num_months, output_date_format)
hive (default)> select add_months(current_timestamp,5);
OK
_c0
2022-01-05
Time taken: 0.116 seconds, Fetched: 1 row(s)

datediff:两个日期相差的天数

hive (default)> select datediff(current_timestamp,"2021-08-01");
OK
_c0
4
Time taken: 0.153 seconds, Fetched: 1 row(s)

date_add:日期加天数

hive (default)> select date_add(current_timestamp,5);
OK
_c0
2021-08-10
Time taken: 0.128 seconds, Fetched: 1 row(s)

date_sub:日期减天数

last_day:日期的当月的最后一天

hive (default)> select last_day("2001-01");
OK
_c0
NULL
Time taken: 0.133 seconds, Fetched: 1 row(s)
hive (default)> select last_day("2001-01-05");
OK
_c0
2001-01-31
Time taken: 0.11 seconds, Fetched: 1 row(s)

date_format(): 格式化日期

hive (default)> select date_format(current_timestamp,"MM-yyyy-dd");
OK
_c0
08-2021-05
Time taken: 0.128 seconds, Fetched: 1 row(s)

常用取整函数
round: 四舍五入

hive (default)> select round(3.4);
OK
_c0
3
Time taken: 0.12 seconds, Fetched: 1 row(s)

ceil: 向上取整
floor: 向下取整
常用字符串操作函数
upper: 转大写

hive (default)> select upper("aac");
OK
_c0
AAC
Time taken: 0.15 seconds, Fetched: 1 row(s)

lower: 转小写
length: 长度

hive (default)> select length("aac");
OK
_c0
3
Time taken: 0.094 seconds, Fetched: 1 row(s)

trim: 前后去空格

hive (default)> select trim(" aac   ");
OK
_c0
aac
Time taken: 0.105 seconds, Fetched: 1 row(s)

lpad: 向左补齐,到指定长度

hive (default)> select lpad(" aac   ",10,"*");
OK
_c0
*** aac   
Time taken: 0.125 seconds, Fetched: 1 row(s)

rpad: 向右补齐,到指定长度

hive (default)> select rpad(" aac   ",10,"*");
OK
_c0
 aac   ***
Time taken: 0.114 seconds, Fetched: 1 row(s)

regexp_replace:使用正则表达式匹配目标字符串,匹配成功后替换!

hive (default)> select  regexp_replace("a//bds/c","/","*");
OK
_c0
a**bds*c
Time taken: 0.106 seconds, Fetched: 1 row(s)

hive (default)> select  regexp_replace("aiibds/c","^i","*");
OK
_c0
aiibds/c
Time taken: 0.125 seconds, Fetched: 1 row(s)

集合操作
size: 集合中元素的个数

hive (default)> select * from test;
OK
test.name       test.friends    test.children   test.address
songsong        ["bingbing","lili"]     {"xiao song":18,"xiaoxiao song":19}     {"street":"hui long guan","city":"beijing"}
yangyang        ["caicai","susu"]       {"xiao yang":18,"xiaoxiao yang":19}     {"street":"chao yang","city":"beijing"}
Time taken: 0.218 seconds, Fetched: 2 row(s)
hive (default)> select size(friends) from test;
OK
_c0
2
2
Time taken: 0.115 seconds, Fetched: 2 row(s)

map_keys: 返回map中的key

hive (default)> select map_keys(children) from test;
OK
_c0
["xiao song","xiaoxiao song"]
["xiao yang","xiaoxiao yang"]
Time taken: 0.107 seconds, Fetched: 2 row(s)

map_values: 返回map中的value

hive (default)> select map_values(children) from test;
OK
_c0
[18,19]
[18,19]
Time taken: 0.206 seconds, Fetched: 2 row(s)

array_contains: 判断array中是否包含某个元素

hive (default)> select array_contains(friends,"lili") from test;
OK
_c0
true
false
Time taken: 0.12 seconds, Fetched: 2 row(s)

sort_array: 将array中的元素排序

hive (default)> select sort_array(friends) from test;
OK
_c0
["bingbing","lili"]
["caicai","susu"]
Time taken: 0.089 seconds, Fetched: 2 row(s)

grouping sets:多维分析

hive (default)> select * from business;
OK
business.name   business.orderdate      business.cost
jack    2017-01-01      10
tony    2017-01-02      15
jack    2017-02-03      23
tony    2017-01-04      29
jack    2017-01-05      46
jack    2017-04-06      42
tony    2017-01-07      50
jack    2017-01-08      55
mart    2017-04-08      62
mart    2017-04-09      68
neil    2017-05-10      12
mart    2017-04-11      75
neil    2017-06-12      80
mart    2017-04-13      94

hive (default)> select name,orderdate,cost from business group by name,orderdate,cost grouping sets((name,orderdate),(name),(name,orderdate,cost));

Total MapReduce CPU Time Spent: 5 seconds 20 msec
OK
name    orderdate       cost
jack    NULL    NULL
jack    2017-01-01      NULL
jack    2017-01-01      10
jack    2017-01-05      NULL
jack    2017-01-05      46
jack    2017-01-08      NULL
jack    2017-01-08      55
jack    2017-02-03      NULL
jack    2017-02-03      23
jack    2017-04-06      NULL
jack    2017-04-06      42
mart    NULL    NULL
mart    2017-04-08      NULL
mart    2017-04-08      62
mart    2017-04-09      NULL
mart    2017-04-09      68
mart    2017-04-11      NULL
mart    2017-04-11      75
mart    2017-04-13      NULL
mart    2017-04-13      94
neil    NULL    NULL
neil    2017-05-10      NULL
neil    2017-05-10      12
neil    2017-06-12      NULL
neil    2017-06-12      80
tony    NULL    NULL
tony    2017-01-02      NULL
tony    2017-01-02      15
tony    2017-01-04      NULL
tony    2017-01-04      29
tony    2017-01-07      NULL
tony    2017-01-07      50
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值