[ 
https://issues.apache.org/jira/browse/BEAM-12075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17313319#comment-17313319
 ] 

Tianzi Cai commented on BEAM-12075:
-----------------------------------

FWIW, adding a processing-time trigger makes the problem go away in 
DirectRunner:
{code:java}
 .apply(Window.<String>into(FixedWindows.of(Duration.standardSeconds(5L)))
    .triggering(
        AfterWatermark.pastEndOfWindow()
            .withEarlyFirings(AfterProcessingTime.pastFirstElementInPane())
            .withLateFirings(AfterCount(1))
    )
   .withAllowedLateness(Duration.standardSeconds(1)).discardingFiredPanes()
)
{code}

> GroupByKey doesn't seem to work with FixedWindows in DirectRunner
> -----------------------------------------------------------------
>
>                 Key: BEAM-12075
>                 URL: https://issues.apache.org/jira/browse/BEAM-12075
>             Project: Beam
>          Issue Type: Bug
>          Components: extensions-java-gcp
>    Affects Versions: 2.28.0
>         Environment: Java 8, 
>            Reporter: Tianzi Cai
>            Priority: P2
>              Labels: Grouping, PubSubIO, Windowing
>
> After applying `FixedWindows` on a streaming source, a `GroupByKey` operation 
> won't emit keyed elements in a window. 
> This example without `GroupByKey` prints all the windowed elements:
>  
> {noformat}
> pipeline
>  .apply("ReadFromPubsub", 
> PubsubIO.readStrings().fromSubscription(subscriptionPath))
>  .apply(Window.into(FixedWindows.of(Duration.standardSeconds(5L))))
>  .apply(WithKeys.of("bobcat"))
>  .apply(MapElements.into(TypeDescriptors.nulls()).via(
>      (KV<String, String> pair) -> {
>          LOG.info("Key: " + pair.getKey() + "\tValue: " + pair.getValue());
>          return null;
>      }
>  ));{noformat}
>  
> This example with `GroupByKey` doesn't emit anything:
>  
> {noformat}
> pipeline
>  .apply("ReadFromPubsub", 
> PubsubIO.readStrings().fromSubscription(subscriptionPath))
>  .apply(Window.into(FixedWindows.of(Duration.standardSeconds(5L))))
>  .apply(WithKeys.of("bobcat"))
>  .apply(GroupByKey.create())
>  .apply(FlatMapElements.into(TypeDescriptors.nulls()).via(
>      (KV<String, Iterable<String>> pair) -> {
>          pair.getValue().forEach(message -> LOG.info("Message: " + message));
>          return null;
>      }
>  ));{noformat}
>  
> I'm using DirectRunner. The same logic works for Python using both the 
> DirectRunner and DataflowRunner.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to