GroupByKey不会在Google Cloud Dataflow中返回任何元素

时间:2016-09-15 12:02:33

标签: google-cloud-dataflow

我是Dataflow的新手,所以这可能是一个简单的问题。

我想试试Sessions窗口策略。根据窗口文档,在我们完成GroupByKey之前不会应用窗口,所以我试图这样做。

但是,当我在Google Cloud Platform中查看我的管道时,我可以看到MapElements返回元素,但GroupByKey没有返回任何元素("添加的元素: - ")。按键分组时我做错了什么?

这是代码中最相关的部分:

events = events
  .apply(Window.named("eventsSessionsWindowing")
    .<MyEvent>into(Sessions.withGapDuration(Duration.standardSeconds(3)))
  );

PCollection<KV<String, MyEvent>> eventsKV = events
  .apply(MapElements
    .via((MyEvent e) -> KV.of(ExtractKey(e), e))
    .withOutputType(new TypeDescriptor<KV<String, MyEvent>>() {}));

PCollection<KV<String, Iterable<MyEvent>>> eventsGrouped = eventsKV.apply(GroupByKey.<String, MyEvent>create());

1 个答案:

答案 0 :(得分:0)

根据触发策略触发GroupByKey,该策略确定系统何时认为已接收到该密钥/窗口的所有数据,并且是时候对其进行分组并传递给下游变换。默认策略是:

  

PCollection的默认触发器是基于事件时间的,并在系统的水印时发出窗口的结果(数据流&#39;它的概念&#34;应该&#34;全部数据)传递窗口的末尾。

有关详细信息,请参阅Default Trigger。您看到了几分钟的延迟,这与PubSub的水印进展相对应。