在Apache Beam(2.5.0)中开窗后,GroupByKey不产生输出

时间:2018-10-04 16:45:22

标签: google-cloud-dataflow apache-beam

我正在使用应用于PCollection的Fixed Window,以便对如下所示的无限制源执行GroupBy:

PCollection<KV<String, Iterable<CustomObject>>> grouppedBy =
    rootObjects.apply(ParDo.of(keyCollection()))
    .apply(
        Window.<KV<String, CustomObject>>into(FixedWindows.of(Duration.standardSeconds(200))))
.apply(GroupByKey.<String, CustomObject>create());


   private DoFn<CustomObject, KV<String, CustomObject>> keyCollection() {
    return new DoFn<CustomObject, KV<String, CustomObject>>() {
      /**
       *
       */
      private static final long serialVersionUID = 1L;

      @ProcessElement
      public void processElement(final ProcessContext c) throws Exception {
        CustomObject obj = c.element();
                 String key = obj.getKey();
        Instant date = new DateTime().toInstant();
        c.outputWithTimestamp(KV.of(key, obj), date);
      }
    };
  }

.apply(GroupByKey.create())步骤中没有任何输出

据我从应用Window的文档中了解到,应该可以在不受限制的源上使用GroupByKey。

1 个答案:

答案 0 :(得分:0)

我在使用Windowing函数在无界PCollection中执行CoGroupByKey时遇到类似的问题。如果是无界PCollection,则需要使用带窗口的触发器功能来产生输出。尝试在窗口函数上使用触发器,然后执行GroupByKey或CoGroupByKey,它将开始产生结果。