apache flink如何实现迭代?

gg0vcinb  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(360)

大数据的dag(directed acyclic graph)执行是常见的。我想知道apache flink是如何实现迭代的,因为图可能是循环的。

baubqpgj

baubqpgj1#

如果flink执行迭代程序,则数据流图不是dag,而是允许循环。然而,这种循环不是任意的,必须遵循一定的模式,才能让Flink在一定程度上控制这种循环流动。
在其他系统中,不支持循环通常没有严格的技术理由。通常禁止以一般方式允许循环,因为这可能会导致无限循环(即元组永远旋转循环,程序不会终止)。
flink通过计算迭代次数来跟踪循环。通过这种方式,flink可以跟踪哪些元组属于哪些迭代,例如,可以避免新迭代的元组“接管”旧迭代的元组。此外,它允许flink检测迭代的结果 n 以及 n+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-操作员

相关问题