使用Apache Flink,如何准时 join两个流?


0

我有两条小溪。它们都是超过1小时窗口的聚合数据。我想压缩这些流,以便相同时间跨度上的聚合被组合在一起,如果现在存在这样的对应匹配,可能会使用空值。

DataStream<OneHourAggA> one = 
    sourceA
      .keyBy(d -> (String) d.values.get("m"))
      .timeWindow(Time.hours(1))
      .apply(new WorkWindwFolder());

DataSteam<OneHourAggB> other =
sourceB
.keyBy(d -> (String) d.values.get("m"))
.timeWindow(Time.hours(1))
.apply(new WorkWindwFolder());

DataStream<Tuple2<Option<OneHourAggA>,Option<OneHourAggB>> zipped =
sourceA.???(sourceB)

我怎样才能做到这一点?

1 答案


0

必须使用coGroup操作来执行聚合结果的外部 join。对于coGroup操作,您将使用相同的时间窗口规范。这是因为前一个窗口的聚合结果将只为每个窗口生成一个元素,并且该元素将获得分配给该窗口的最大时间戳。


我来回答

写文章

提问题

面试题