雲のデータフローでは、サイズとステップを持つSlidingWindowの機会に要素を複数のウィンドウに割り当てることができます。実際には、隣接する2つのウィンドウ内の要素は、スライドするステップを除いてほぼ同じである、非常に小さなステップを有する大きなサイズのSlidingWindowを有すると仮定する。SlidingWindowsでデータフローが重複しないようにしますか?
SlidingWindowで計算すると、このウィンドウ内のすべての要素が読み込まれ、これらの要素の計算が開始されます。または、隣接するウィンドウは、計算結果の重複を避けるためにいくつかの計算結果を再利用できますか?要素が複数のウィンドウに割り当てられたときにコピーされるかどうか。
はい、ユーザー定義のケースでは、この種の最適化を行うのは難しいです。ここで別のケースを考えてみましょう。ストリーミングプロセスが開始されてから5分ごとにトップ10の頻度のクエリを計算したいのですが、トップ10はこの5分間でトップ10以外のグローバル状態ですhttp://stackoverflow.com/questions/33745935/long-lived-state-with-google-dataflowそれまで5分ごとにトリガし、最初から上位10個の要素を計算すると、コストは膨大になりすぎて耐えることができません。つまり、ユーザー定義の状態を保存する必要があります。 –
1つのウィンドウ内で、上位10個の要素を追跡しても、すべての前の要素が再訪されるわけではありません。要素が入ると、 'Top'が実行され、アキュムレータのみが格納されます(およそユニークな要素から頻度カウントへのマッピング)。トリガが起動するたびに、このマップから上位10個の要素を読み取る必要があります。 –
開始から5分ごとにトップ10を計算したい場合はどうすればよいですか? –