Apache Flink如何实现迭代?

时间:2015-11-24 08:49:43

标签: bigdata apache-flink

DAG(有向无环图)执行大数据很常见。我想知道Apache Flink如何实现迭代,因为图形可能是循环的。

1 个答案:

答案 0 :(得分:6)

如果Flink执行迭代程序,则数据流图不是DAG,而是允许循环。但是,这个循环不是任意的,必须遵循某种模式,以允许Flink在一定程度上控制这种循环流。

在其他系统中,由于不支持循环,通常没有严格的技术原因。通常禁止以通用方式允许循环,因为它可能导致无限循环(即,元组永远旋转循环并且程序不会终止)。

Flink通过计算迭代次数来跟踪周期。这样,Flink可以跟踪哪些元组属于哪些迭代,并且可以例如避免新迭代中的元组“接管”旧元组中的元组。此外,它允许Flink检测迭代结果nn+1是否相等。相同的结果表明完成的计算允许Flink打破无限循环并终止(这适用于所谓的定点迭代)。

详细阅读本研究论文:https://dl.acm.org/citation.cfm?id=2350245

此处描述了程序中迭代的用法:https://ci.apache.org/projects/flink/flink-docs-release-0.10/apis/programming_guide.html#iteration-operators