hive的内置函数unix_timestamp 、case when 、cast记录

记录一下hive的几个小的内内置函数。

新建个默认表dual

oracle数据库中有个默认表是dual,但是hive里面没有,为了方便测试我们需要的一些函数,创建一个dual方便测试。

参考链接:hive中构建dual虚表

准备个需要加载的数据
echo 'X' > dual.txt
创建dual表
create table dual(
temp string
);
加载数据
load data local inpath '/opt/cdhmoduels/data/dual.txt' into table dual;
unix_timestamp

时间转换函数,可以把毫秒数转成我们需要的日期格式,也可以把指定的日期格式转换成毫秒数。

select unix_timestamp("20170520 12:00:00","yyyyMMdd HH:mm:ss") from dual limit 1;
select from_unixtime(1495252800,"yyyyMMdd HH:mm:ss") from dual limit 1;
case when的用法

case when的用法一般两种,这里只列了一种,数据自己准备下就好。

select 
case 
when userid=='186' then 'this  is  186'
when userid=='196' then 'this   is 196'
else '不知道干啥'
end as www
from u_data_new limit 5;
cast 类型转换用法

下面的案例是创建表的时候是从源表来创建的,也就是源表是什么类型,新表也是什么类型,但是使用了cast(movieid as string)就把原来的int类型转成了String类型。

源表类型:
hive (default)> desc u_data;
OK
col_name	data_type	comment
userid              	int                 	                    
movieid             	int                 	                    
rating              	int                 	                    
unixtime            	string              	                    
Time taken: 0.143 seconds, Fetched: 4 row(s)
创建表的SQL
create table uu_cast as select userid as userid ,cast(movieid as string) as movieid from u_data;
新表类型
hive (default)> desc uu_cast;
OK
col_name	data_type	comment
userid              	int                 	                    
movieid             	string //这里变成了String类型           	                    
Time taken: 0.103 seconds, Fetched: 2 row(s)
hive (default)> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值