2017-10-26 3 views

答えて

0

もちろん、それはかなり簡単です。各タイムウィンドウの間にすべての入力レコードに集約が必要な場合は、windowAll()のフレーバーの1つを使用する必要があります。つまり、キーストリームを使用せず、並行して操作することはできません。

tumbling windowsまたはsliding windowsを入力し、event time or processing timeで操作するかどうかを決定する必要があります。

しかし、大まかに言えば、あなたはこのような何かやる:あなたのUniqueWordCounterは、ウィンドウ内のすべての単語の反復可能なを受け、ユニークな単語の数を返しますWindowFunctionなります

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

を。一方

、あなたがkeyedstreamを使用し、各キーのユニークワードをカウントしたい、それに応じてアプリケーションを変更している場合:

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

をしかしproblemeがある:私は知っている必要があり、各キーの 固有の値であるため、「keyBy」を使用する必要があります – FlinkNoob

+0

このケースも含めて回答を更新しました –

+0

適用はあまりにも一般的です。適用しないとできない方法はありませんか? – FlinkNoob

関連する問題