迭代算法在很多数据分析领域会用到,比如机器学习或者图计算。为了从大数据中抽取有用信息,这个时候往往会需要在处理的过程中用到迭代计算。大数据处理框架很多,比如spark,mr。实际上这些实现迭代计算都是很困难的。
Flink神奇之处就是它直接支持迭代计算。Flink实现迭代的思路也是很简单,就是实现一个step函数,然后将其嵌入到迭代算子中去。有两种迭代操作算子:Iterate和Delta Iterate。两个操作算子都是在未收到终止迭代信号之前一直调用step函数。
本小节是主要是讲解理论。
迭代操作算子包括了简单的迭代形式:每次迭代,step函数会消费全量数据(本次输入和上次迭代的结果),然后计算得到下轮迭代的输出(例如,map,reduce,join等)
1.迭代输入(Iteration Input)
第一次迭代的初始输入,可能来源于数据源或者先前的操作算子。
2. Step函数
每次迭代都会执行step函数。其是由map,reduce,join等算子组成的数据流,根据业务定制的。
3. 下次迭代的部分结果(Next Partial Solution):
每次迭代,step函数的输出结果会有部分返回参与继续迭代。
4. 最大迭代次数
如果没有其他终止条件,就会在聚合次数达到该值的情况下终止。
5. 自定义聚合器收敛:
迭代允许指定自定义聚合器和收敛标准,如sum会聚合要发出的记录数(聚合器),如果此数字为零则终止(收敛标准&#