解决思路: 通过添加随机前缀,打散 key 的分布,使得数据不会集中在几个 Subtask。
具体措施:
① 在原来分区 key/uid 的基础上,加上随机的前缀或者后缀。...group by
TUMBLE(proc_time, INTERVAL '1' MINUTE) ,plat
如果某一个端产生的数据特别大,比如我们的微信小程序端产生数据远远大于其他app端的数据...select
winEnd,
split_index(plat1,'_',0) as plat2,
sum(pv)
from (
select
TUMBLE_END(proc_time...) group by
TUMBLE(proc_time, INTERVAL '1' MINUTE), plat1
) group by winEnd,split_index(plat1...,'_',0)
在这个sql的最内层,将分组的key,也就是plat加上一个随机数打散,然后求打散后的各个分组(也就是sql中的plat1)的
pv值,然后最外层,将各个打散的pv求和。