感谢大佬,现在基本可以确定是数据倾斜导致ck缓慢和反压严重 理由: 1.在webui查看计算子subtasks信息,3个subtask中其中一个的数据量只有其他两个的1/3 2.将key添加随机数后,计算性能直线上升(当然只是为了测试,结算结果显然不是预期的)
之前我做过分布聚合来解决缓解数据倾斜问题 需求:比如有两个字段:url,respontse_time,按url keyby,一分钟时间窗口,计算该url的响应时间(respontse_time)中位数 这里明显几个首页url的访问量会非常大,有些详情页url可能就访问量很小,这就肯定会有数据倾斜 我之前的分布聚合步骤是: 第一步聚合中:在url后添加1~50的整型随机数,keyby后使用RoaringBitmap缓存respontse_time. 结果类似于 (www.baidu.com1,[1,2,3]) (www.baidu.com2,[4,5,6]) 第二步聚合中:将url后缀去除,再次keyby后,将第一轮的RoaringBitmap缓存的数据整合 结果类似于 (www.baidu.com,[1,2,3,4,5,6]) 最后将RoaringBitmap里的全窗口数据计算最终中位数结果 www.baidu.com (3+4)/2=3.5 现在看来应该提升不佳,因为是计算中位数,就我目前对中位数的原理理解,无论如何都必须将全窗口数据缓存到窗口结束才能触发结果计算,也就是我上面的步骤,虽然有分步,但实际上只是分步缓存,而不是分步计算,不能像sum和count计算,可以在分步聚合中,逐步累加中间结果 对于这类有不能增量累加的数据倾斜场景,不知大佬有没有比较好的解决知道 -- Sent from: http://apache-flink.147419.n8.nabble.com/
