2017-10-26 5 views

답변

0

확실히 간단합니다. 각 시간 창에서 모든 입력 레코드에 대해 집계를 원한다면 windowAll()의 풍미 중 하나를 사용해야합니다. 즉, keyedstream을 사용하지 않고 병렬로 작업 할 수 없습니다 .

tumbling windows 또는 sliding windows, 그리고 event time or processing time으로 운영할지 여부를 결정해야합니다.

그러나 대략적으로 말해서, 당신은 같은 것을 할 수 있습니다 :

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); 
env.addSource(...) 
    .timeWindowAll(Time.minutes(15)) 
    .apply(new UniqueWordCounter()) 
    .print() 
env.execute() 

귀하의 UniqueWordCounter는 창에 모든 단어의 반복 가능한을 수신하고 독특한 단어의 수를 반환하는 WindowFunction 될 것입니다.

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); 
env.addSource(...) 
    .keyBy(...) 
    .timeWindow(Time.minutes(15)) 
    .apply(new UniqueWordCounter()) 
    .print() 
env.execute() 
+0

을하지만 probleme은 다음과 같습니다 : 당신이 keyedstream를 사용하여 각각의 키에 대해 고유 한 단어를 계산하려는 경우

한편

, 그에 따라 응용 프로그램을 수정 각 키에 대해 내가 알아야 할 고유 한 값이므로 "keyBy"를 사용해야합니다 – FlinkNoob

+0

이 경우도 포함하도록 답변을 업데이트했습니다 –

+0

적용이 너무 많습니다. 적용하지 않고 적용 할 수 없습니까? – FlinkNoob