Apache Beamは最近、StateSpec
と@StateId
という注釈によって州立細胞を導入しました。Apache FlinkとGoogle Cloud Dataflowで部分的にサポートされています。Beamのステートフル処理 - ウィンドウペインで共有される状態ですか?
私の質問は、ステートフルなDoFnがウィンドウ処理されたストリームで使用されている場合の状態ガベージコレクションに関するものです。典型的には、ウインドウが切れる(ウインドウの端を透かしが通過する)とき、状態はランナーによって除去される(ガベージコレクトされる)。しかし、窓ガラスが早期にトリガーされる場合を考えると、解雇ペインが破棄されています。この場合、
input.apply(Window.<MyElement>into(CalendarWindows.days(1))
.triggering(AfterWatermark.pastEndOfWindow()
.withEarlyFirings(
AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(10))
))
.discardingFiredPanes()
.apply(ParDo.of(new MyStatefulDofn()));
は、早期に解雇されたキーの状態がウィンドウの有効期限が切れた後にまで保持されますか?すなわち、同じウィンドウ内の後続のペインは、以前のペインで書かれた状態にアクセスするだろうか?