我每小时都有一个窗口汇总的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中执行此操作的推荐方法。
答案 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(...);