在鞋厂的第一个任务,拆表。需要把订单表按照开始日期和结束日期拆分成多条记录,挺新鲜的~

transform方式,使用到了python。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

(1)把hive表的数据传入,通过python按照日期循环处理,返回多条记录。

(2)生成序列表,然后采用cross join的方式,在hive端生成多条记录,再根据日期和序列进行处理。

udf方式,更容易操作,我个人习惯使用Java。udf传入开始日期和结束日期,返回时间范围的数组。

再通过lateral view的方式处理。

 

另外,针对这个需求,对比了crossjoin的方式(用python先生成序列表)和udf:

1)效率:序列表为1-100的情况,执行时间28分钟,序列表1000情况,调度卡住;

           udf计算日志一个分区全量情况,执行时间20分钟,剔除无效数据后,执行时间约4分钟。

2)udf不需要做写操作,减少了存储使用。

3)使用udf,sql代码量少,且具有通用性。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄