2017-12-20 17 views
1

Flink documentation에서 반복 루프 연산자를 사용하여 루프를 구현할 수 있습니다. Flink 코드는 느리게 평가되기 때문에 while 루프를 사용하여 종료 조건을 평가할 수 없습니다.Flink의 대량 반복 연산자와 while 루프의 차이점은 무엇입니까?

그러나 initial.iterate(10){...}과 같은 대량 반복의 경우 동일한 효과를 얻기 위해 while 루프를 사용할 수 있습니까?

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

답변

1

내장 된 대량 반복 연산자를 사용하고 while 루프를 사용하여 계획을 만드는 것과 다른 점은 결과 실행 계획입니다.

루프 동안

:

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

대량 반복 :

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

당신이 실행하는 반복의 수에 따라 대량 반복 계획의 크기가 상당히 작아 질 수 있습니다. 계획이 작 으면 Flink는 계획을 최적화하고 계획하는 데 필요한 시간이 줄어 듭니다.

또한 옵티마이 저는 각 반복에서 사용되는 메모리의 명시 적 반복 및 캐시 데이터 세트에 대한 정보를 활용할 수 있습니다.