执行两层聚合的最佳方法是什么?

时间:2017-09-29 20:27:56

标签: apache-flink

我正在尝试使用Flink 1.3.2进行二级分层聚合,但我的结果似乎没有按预期执行。最初,我得到预期的结果。

我在这里采取的方法有什么根本原因吗?

我无法找到其他执行此类链式操作的好例子。

val myStream = sourceStream
  .keyBy( 0 )      
  .timeWindow( Time.minutes(30) )
  .reduce( (r1: myRow, r2: myRow) => {  r1 + r2  },
           (key: Any, window: TimeWindow, iterable: Iterable[myRow], out: Collector[myRow]) => { out.collect(iterable.iterator.next.setWindowStart(window.getStart)) }   )
  .map(tier2Row.fromMyRow(_))
  .keyBy( 0 )        
  .timeWindow( Time.minutes(10) )
  .reduce( _ + _ )
  .addSink(new MyTier2RowSink) 

1 个答案:

答案 0 :(得分:0)

我最初使用处理时间模式用于基于时间的数据并且得到了奇怪的结果。我切换到Ingestion Time模式,分层聚合现在以预期的方式处理,除了设置模式之外我的代码没有变化。