transform Vs Udf

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

transform方式,使用到了python。

(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代码量少,且具有通用性。

转载于:https://www.cnblogs.com/yayaGoUp/p/9486683.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值