我正在使用应用于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。
答案 0 :(得分:0)
我在使用Windowing函数在无界PCollection中执行CoGroupByKey时遇到类似的问题。如果是无界PCollection,则需要使用带窗口的触发器功能来产生输出。尝试在窗口函数上使用触发器,然后执行GroupByKey或CoGroupByKey,它将开始产生结果。