제목이 거의 전부입니다. 창 너비를 얼마나 짧게 설정했는지 상관없이 DirectRunner에서 작업을 실행할 때 GroupByKey
이 실행되지 않습니다. DataflowRunner를 사용할 때 예상대로 작동합니다.DirectRunner를 사용할 때 Apache Beam GroupByKey가 실행되지 않습니다.
0
A
답변
0
GroupByKey
기본적으로 입력 PCollection
의 워터 마크가 해당 창의 끝 부분에 도달하면 특정 창을 시작합니다. 해고가되지 않으면 입력 PCollection
의 워터 마크가 진행 중이 아니거나 처리가 진행되고 있지만 모든 데이터가 늦게 폐기됩니다.
그 이유는 PCollection
의 생산 방식에 달려 있습니다. 내 생각 엔 당신이 PubSubIO.read()
에서 직접 읽는 것일 것입니다. PubSub의 워터 마크를 계산하는 것은 어렵습니다 (특히 사용자 정의 타임 스탬프 속성을 사용하는 경우). Direct runner에서이 계산과 관련된 몇 가지 알려진 문제가 있습니다. 데이터 흐름 러너는 런타임에 다른 구현을 워터 마크를 더 정확하게 계산하지만 (여전히 불완전하게)
불행히도 우리는 현재 직접 러너에서 워터 마크 진행 상황을 모니터링하는 도구가 없습니다. 일부 로그 문을 PubsubUnboundedSource.PubsubReader.getWatermark()
에 추가하여 디버깅을 시도 할 수 있습니다. 또한 읽기와 GBK 사이에 ParDo
을 추가하고 수신을 끝내는 이벤트 시간 소인을 인쇄 할 수 있습니다 (c.timestamp()
).
지연된 데이터를 삭제하지 않도록 창 전략을 구성 할 수도 있습니다 (Managing late data 참조).