欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

transform Vs Udf

程序员文章站 2022-03-23 12:41:19
在鞋厂的第一个任务,拆表。需要把订单表按照开始日期和结束日期拆分成多条记录,挺新鲜的~ transform方式,使用到了python。 (1)把hive表的数据传入,通过python按照日期循环处理,返回多条记录。 (2)生成序列表,然后采用cross join的方式,在hive端生成多条记录,再根 ......

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

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