任务优化实例
sql优化,包括但不限于数据倾斜,文件数,udf函数,任务拆解等方式
fly_sky333
在代码里摸爬滚打
展开
-
UDF函数开发中的坑
hive中udf函数遇到的问题和处理方式原创 2022-03-23 14:18:44 · 2894 阅读 · 0 评论 -
管报数仓规则匹配任务优化
优化前:sql逻辑不复杂,只是中间用到了一个udtf函数,函数处理逻辑非常复杂,先付一张sql图这里涉及到大表join小表,所以采用了mapjoin,去掉reduce过程,然后重新定义文件数量,让多个map去并行。关键点在于udtf函数逻辑过于复杂,而且传入的拼接字段,每个月会有4万左右数据,拼接后的字符串相同,这样就会导致这些数据进了同一个map,同时由于udtf逻辑复杂,所以这两个map会一直跑,由此出现了map端的数据倾斜。运行时长在90分总以上,由于等不了,就停了,没有具体看过多久执行完原创 2021-08-19 17:49:18 · 188 阅读 · 0 评论 -
管报报表优化
优化前:代驾管报分为代驾,新桔,代物流和代保养这几块内容。sql第一阶段先把三块日报数据放到表中,第二阶段依赖第一阶段结果作出符合指标,依次insert into进去,第三阶段将三部分统一作出钆差放到表中。在这个场景下,随着复合指标越来越多,insert into部分达到近50个,jvm频繁开启,导致任务运行时长过长,最后运行时间短的话80分钟,长的话120分钟。优化方式:这种场景下,无关乎数据倾斜,文件数等因素,所以参数优化已然不适用,所以采用sql逻辑优化,因为这个里面分为三部分,所以将三部分内原创 2021-08-19 17:46:42 · 500 阅读 · 0 评论 -
打标签任务优化
优化前:sql比较简单,表中数据是700万左右,就是查出某个表的数据,放到另一个表,但是中间用到了一个udtf函数,关键在于函数逻辑复杂。之前由于没有做优化,所以硬跑下来,耗时85分钟左右,日志没有数据倾斜现象。时间过去太久,运行图已经覆盖没有了,这里就不放了优化方式:因为数据量不是很大,也没有数据倾斜,而且从运行日志中可以看出没有reduce过程,所以就关注了map,发现只开启了2个map,然后怀疑是因为map太少了,处理数据条数太多,所以就把参数设置的小一点,从而使map数增加到了15,相当于15个并行原创 2021-08-19 17:44:01 · 73 阅读 · 0 评论 -
mapjoin
背景:有一段sql,A left join B,查出的结果再 left join C,A表5亿条数据,B表2条,C表16条现象:用spark直接跑发生数据倾斜,55分钟没有跑出来,就把任务停了解决过程:由于确定是数据倾斜引起的,然后这三个表的数据量有个大概了解,所以直接采取mapjoin,先切换成hive,然后加入mapjoin的参数,小表阈值设置为20兆,结果运行时间缩短至10分钟。...原创 2021-08-19 17:37:15 · 69 阅读 · 0 评论