2017-03-26 19 views
0

當輸入元素在DoFn的側面輸出中具有標誌值時,是否有辦法關閉窗口?例如。表示關閉會話的事件關閉窗口。基於元素值之後的關閉窗口

我一直在閱讀文檔,觸發器大多數時間基於。一個例子會很棒。

編輯:Trigger.OnElementContext.forTrigger(ExecutableTrigger觸發器)似乎很有前途,但ExecutableTrigger文檔目前非常苗條。

回答

1

我不認爲這是可用的。現在只有一個數據驅動觸發器,elementCountAtLeast。

https://cloud.google.com/dataflow/model/triggers#data-driven-triggers

用於這項工作各地將複製會話窗口功能代碼,編寫自定義窗口的功能。

https://github.com/apache/beam/blob/890bc1a23f493b042f8c2de5c042970ce5ddca96/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Sessions.java

總之,你把分配元素融入同一窗口,直到您看到您的終端元素。然後開始創建一個新窗口。

https://github.com/apache/beam/blob/890bc1a23f493b042f8c2de5c042970ce5ddca96/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Sessions.java#L60

0

目前,沒有方法來觸發關閉一個元素的內容,很遺憾。來自Apache Beam Docs

梁提供了一個數據驅動觸發器,AfterPane.elementCountAtLeast()。這個觸發器在元素計數上工作;它會在當前窗格收集至少N個元素之後觸發。

當前有一個open ticket更強大的數據驅動程序觸發器。然而(同樣,目前來看),看起來Beam團隊正在逐個填寫數據驅動觸發器的用例(即元素數或時間戳),而不是增加基於廣泛的支持來觸發任意值在一個元素內。

ExecutableTrigger包裝一個Trigger對象以供執行。請參閱ExecutableTrigger文檔。