Apache flink Flink和#x27之间的区别是什么;s批量迭代运算符和while循环?

Apache flink Flink和#x27之间的区别是什么;s批量迭代运算符和while循环?,apache-flink,Apache Flink,从中,我知道循环可以用迭代操作符实现。由于Flink代码是惰性计算的,所以不可能使用while循环计算终止条件 但是对于像initial.iterate(10){…}这样的批量迭代,我们可以使用while循环来实现同样的效果吗 var dataset = ... while (i < 10) { dataset = step(dataset); } var数据集=。。。 而(i

从中,我知道循环可以用迭代操作符实现。由于Flink代码是惰性计算的,所以不可能使用while循环计算终止条件

但是对于像
initial.iterate(10){…}
这样的批量迭代,我们可以使用while循环来实现同样的效果吗

var dataset = ...   
while (i < 10) {
    dataset = step(dataset);
}
var数据集=。。。
而(i<10){
数据集=步骤(数据集);
}

使用内置批量迭代操作符和使用while循环构建计划的区别在于生成的执行计划

While循环:

StartDS -> Step1 -> Step2 -> ... -> Step10 -> ResultDS
批量迭代:

StartDS -> IterationHead -> Step -> IterationTail -> ResultDS
               ^                           |
                \-----------(9 times)-----/
根据您正在运行的迭代的数量,批量迭代计划的大小可以大大减小。更小的计划意味着Flink需要更少的时间来优化和安排计划

此外,优化器可以利用有关显式迭代的信息,并将每次迭代中使用的数据集缓存在内存中