Apache Flink-每小时汇总数据的每日汇总

时间:2018-10-17 07:17:17

标签: apache apache-flink flink-streaming

我每小时都有一个窗口汇总的DataStream。

DataStream <RawData> ds = .....

  SingleOutputStreamOperator<HourlyAggregated> hourly =  
  ds.keyBy(HourlyCountersAggregation.KEY_SELECTOR)
             .timeWindow(Time.hours(1))
             .aggregate(new HourlyCountersAggregation());

此DataStream <HourlyAggregated>每小时都下沉到Cassandra。

我还希望每天汇总同一DataStream <HourlyAggregated>

为避免每小时保持从DataStream <RawData> ds到流的大量日常状态,建议从每小时汇总的DataStream中执行此操作的推荐方法。

1 个答案:

答案 0 :(得分:1)

我认为您可以尝试分叉作业图,以便在接收器和下一个窗口中使用每小时汇总数据的输出(这样您就可以在每小时汇总的基础上进行每日汇总,从而节省了计算量时间)。像这样:

SingleOutputStreamOperator<HourlyAggregated> hourly = ds.keyBy(HourlyCountersAggregation.KEY_SELECTOR)
         .timeWindow(Time.hours(1))
         .aggregate(new HourlyCountersAggregation());

hourly.addSink(...);

SingleOutputStreamOperator<HourlyAggregated> daily = hourly.timeWindow(Time.hours(24))
         .trigger(CountEventTrigger.of(24))
         .aggregate(...);