2017-03-26 7 views
0

입력 요소의 플래그 값이 DoFn의 측면 출력에있을 때 창을 닫을 수 있습니까? 예 : 세션을 닫음을 나타내는 이벤트는 창을 닫습니다.요소 값을 기준으로 창 닫기

저는 문서를 읽었으며 트리거는 대부분 시간 기반입니다. 좋은 예가 될 것입니다.

편집 : Trigger.OnElementContext.forTrigger (ExecutableTrigger 트리거)는 유망한 것처럼 보이지만 ExecutableTrigger 문서는 현재 매우 슬림합니다.

답변

1

나는 이것이 가능하다고 생각하지 않습니다. 현재 Data Driven Trigger는 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이 있습니다. 그러나 (다시 말하지만) 빔 팀은 임의의 값을 트리거하는 광범위한 기반 지원을 추가하는 것과 달리 데이터 기반 트리거 (예 : 요소 수 또는 타임 스탬프) 하나씩 사용 사례를 채우는 것으로 나타납니다 요소 내에서.

ExecutableTrigger는 실행을 위해 Trigger 개체를 래핑합니다. ExecutableTrigger 문서를 참조하십시오.