知识卡片

全量迭代与增量迭代的取舍

专业/工作 · 502.c

内容

Flink支持两种迭代计算方式:全量迭代(Iterate算子)每一轮都让阶跃函数遍历整个数据集,基于上一轮的完整结果集算出下一轮结果,直到满足终止条件;增量迭代(Delta Iterate)则只对”热点”元素做局部重算,已经收敛、不再变化的”冷”元素直接跳过,不参与本轮计算。这个设计对应了很多迭代类算法(如PageRank、最短路径)的一个共同特征:迭代到后期,大部分节点的值已经趋于稳定,只有少数节点还在变化,如果每轮都全量重算,绝大部分计算是在白白重复验证”这个值没变”。增量迭代把”只处理还在变化的部分”作为一等公民,本质上是用额外的状态跟踪(哪些元素是热点)换取避免无意义的重复计算,是大规模迭代计算中常见的性能优化思路。

参考来源

《Flink入门与实战》第6章《DataStream API和DataSet API》