2017-12-20 7 views
1

Flink documentationから、わかっているループは反復演算子で実装できます。 Flinkコードは遅延評価されるため、whileループを使用して終了条件を評価することはできません。Flinkの一括反復演算子とwhileループの違いは何ですか?

しかし、initial.iterate(10){...}のような一括反復では、同じ効果を達成するためにwhileループを使用できますか?

var dataset = ... 
while (i < 10) { 
    dataset = step(dataset); 
} 

答えて

1

組み込みの一括反復演算子を使用し、whileループを使用して計画を作成する方法の違いは、実行計画です。

Whileループ:

StartDS -> Step1 -> Step2 -> ... -> Step10 -> ResultDS 

一括反復:あなたが実行している反復の数に応じて

StartDS -> IterationHead -> Step -> IterationTail -> ResultDS 
      ^       | 
       \-----------(9 times)-----/ 

、バルクイテレーション計画のサイズを大幅に小さくすることができます。プランが小さくなるということは、プランクの最適化とスケジューリングに必要な時間がより短いことを意味します。

さらに、オプティマイザは、各反復で使用されるメモリ内の明示的な反復とキャッシュDataSetsに関する情報を活用できます。

関連する問題