2017-12-11 6 views
0

I가 다음과 같은 요구 사항 : 에 걸쳐 중복 제거하는 방법 오버 랩핑/흐름 아파치 빔 슬라이딩 윈도우를

  • 지속 시간 30 분, 기간 1 분의 창을 술집 하위 항목에서

    • 읽기 이벤트
    • 주어진 ID에 대해 3 개의 이벤트가 일치하면 일부 술어와 일치하는 경우 다른 게시자 하위 주제에서 이벤트를 발생시켜야합니다.
    • 그룹화를 위해 세 번째 이벤트가 발생하면 이벤트가 발생해야합니다 이 ID는 사기 행위를 탐지하기위한 것입니다. 내가 창 당 여러 개의 이벤트를 방출해야 할 수 있도록 하나 개의 창에서이 많은 내 조건에 맞는 3 이벤트가 많은 IDS 수 나는 PCollection을 소모하는 기능을 쓸 수 있어요

    수행에 필요한 그룹, 논리와 내 비즈니스 로직에 따라 필터링하고 이벤트를 방출합니다.

    질문 :

    1. 출력 PCollection은 슬라이딩 윈도우 중복으로 인한 중복을 포함한다. 이것은 슬라이딩 윈도우의 예상되는 동작이지만, 같은 데이터 흐름 파이프 라인에 머무르는 동안 어떻게 피할 수 있는지 이해합니다. 나는 외부 시스템에서 중복 제거 할 수 있다는 것을 알았지 만 그것은 단지 시스템에 복잡성을 추가하는 것입니다.

    많은 감사

  • 답변

    1
      실시간 탐지 이러한 유형의 시나리오에 적합한 흐름은
    1. 나는 또한 나의 조건이 창
    2. 에 도달 할 때마다 모든 시간을 발사 트리거의 일종을 쓸 필요가
    3. 출력 PCollection을 일반 창 (일반 Window.into() 사용)에 다시 넣고 GroupByKey을 사용하여 중복 제거 할 수 있습니다.
    4. 관심 이벤트가 이미 PCollection 인 것처럼 들리는 것 같습니다. "각 이벤트마다 뭔가를하려면"ParDo.of(whatever action you want) 만 있으면됩니다. 트리거는 다른 작업을 수행합니다. 즉, 새 값 V이 의 특정 키 K에 도착하면 수행 할 작업을 제어합니다. 값을 삭제하거나 버퍼링할지 또는 버퍼 처리 된 KV<K, Iterable<V>>을 다운 스트림 처리에 전달할지 여부를 제어합니다.
    5. 예 :
    +0

    감사합니다, 빠른 워터 마크가 너무 늦게, 난 항상 버퍼링을하지 않고, 트리거를 작성하려면 어떻게해야합니까 어떻게 다운 스트림 즉시 전달 내 창을 통과 할 때 2. 기본 트리거 화재를 따라 ? –

    +0

    그게 Repeatedly.forever (AfterPane.elementCountAtLeast (1)),하지만 꼭 필요해? 트리거는 그룹화 작업에만 적용됩니다. ParDos는 결과를 즉시 다운 스트림 변환에 전달합니다. – jkff