Hive 的综合案例

补充:

hive自带的时间函数Unixtime(时间分为两类)

将时间转换为时间戳,方便用来求两个时间点的时间间隔;

-》常见:2015-08-31 00:04:37
-》Unix timestamp,以格林威治时间为基准
-》hive自带函数:unix_timestamp,from_unixtime

-》场景:(2015-08-31 00:04:37和2015-09-28 11:04:37时间差)
-》查看两条记录之间的时间差,先转换为统一的Unix时间戳,再相减
-》场景一:可以分析网站后台的日志数据,统计用户停留时间(每个session的停留时间)

-》指定格式进行转换,注意时间与后面的格式要匹配
select unix_timestamp("20150831 00:04:37","yyyyMMdd HH:mm:ss");
select unix_timestamp("20150831000437","yyyyMMddHHmmss"); 
 
-》将Unix时间戳转换为标准时间格式:1440950677 转化为 2015-08-31 00:04:37
select from_unixtime(1440950677,"yyyy-MM-dd HH:mm:ss");


case when的用法

分析emp表,发现有的员工奖金一栏有值,有的员工奖金一栏为null,计算总工资的时候,我们通常需要将奖金与薪水加起来,如果不对null字段处理,就会出现int + null 为null 的情况。

select empno,sal+comm from emp;

select empno, sal + case when comm is null then 0 else comm end from emp;

select empno,ename,

case

when sal < 1000 then 'low' 

when sal >= 1000 and sal < 3000 then 'middle'

when sal >= 3000 then 'high'

end  new_sal

from emp;

【cast类型转换】
create table casttest as select empno e_no,ename e_name ,cast(sal as string) new_sal from emp;


Hive综合案例

流程:
-》需求分析(业务性)
-》数据采集(采集的框架和平台处理框架)
-》数据清洗(处理的手段)
-》数据分析(分析的逻辑)
-》结果展示(数据可视化)


日志每一行有36个字段,每个字段的含义如表所示:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值