2016-04-22 5 views
3

私は2つのストリームを持っています。これらは両方とも、1時間のウィンドウにわたって集計されたデータです。これらのストリームを圧縮して、同じ時間軸上の集計がまとめられ、おそらくはそのような一致する一致が存在する場合は空の値になる可能性があります。Apache Flinkを使って、ジップ2ストリームを時間通りに結合する方法は?

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

アグリゲーション結果の外部結合を実行するには、coGroup操作を使用する必要があります。 coGroup操作に同じ時間ウィンドウ仕様を使用します。これは、前のウィンドウの集計結果が1つのウィンドウにつき1つの要素しか生成せず、この要素が割り当てられたこのウィンドウの最大タイムスタンプを取得するためです。

関連する問題