2017-11-24 10 views
0

私のユースケースは、固定の時間別ウィンドウでデータを処理する制限のないストリーミングパイプラインです。しかし、私は前のウィンドウからデータを知る必要があります。メモリ内のどこかのArrayListにデータを格納する方法はありますか、それともどこかのDBに書き込む必要がありますか?Apache Beamメモリ内ストレージ

私はスライディングウインドウを避けようとしています。処理の一部だけが前のウィンドウのこのデータを必要とし、できるだけオーバーラップしないようにしたいからです。

答えて

2

ステートフルなDoFnを使用してみてください。ただし、状態自体はウィンドウごとのキーであることに注意してください。 https://beam.apache.org/blog/2017/02/13/stateful-processing.htmlおよびhttps://beam.apache.org/blog/2017/08/28/timely-processing.htmlを参照してください。

ビームウィンドウは「イベント時間」(「処理時間」ではなく)にあります。データが不整然と到着すると(実際にはほとんど常にそうです)、「前のウィンドウ」という概念は、以前のウィンドウのデータが後のウィンドウのデータの後に到着する可能性があるため、意味をなさない。また、いくつかのウィンドウのデータは決して到着しないかもしれません。これを考慮してアルゴリズムを再調整する必要があるでしょう。ユースケースをより詳しく説明すると役に立ちます。

+0

ちょっと@jfkk、ガイダンスのおかげで。私はまだApache Beamで非常に新しいので、おそらく概念を把握するのに時間がかかります。しかし、新しい開発は確かにエキサイティングに見え、私のユースケースに有望に役立つようです。私はいくつかのiotデータの処理に取り組んでおり、データが入ると、同じバッチにあるべきかどうか(同じ識別子でタグ付けされるべきかどうか)を特定する必要があります。しかし、バッチがどれくらい持続するかについては特に制限がないので、データを処理する際に、前のウィンドウで処理が「中止」された場所を文書化するためのパラメータをいくつか含める必要があります。 – jlyh

関連する問題