2016-02-22 201 views
0

顯示窗口的開始和結束時間的方式是什麼?像實現用戶定義的窗口?窗口的開始和結束時間

想知道Windows開始的時間和評估,使得輸出是

quantity(WindowAll Sum), window_start_time, window_end_time 
12, 1:13:21, 1:13:41 
6, 1:13:41, 1:15:01 

回答

0

找到了答案。 TimeWindow.class具有getStart()和getEnd()

示例用法:

public static class SumAllWindow implements AllWindowFunction<Tuple2<String,Integer>, 
     Tuple3<Integer, String, String>, TimeWindow> { 

    private static transient DateTimeFormatter timeFormatter = 
      DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SS").withLocale(Locale.GERMAN). 
        withZone(DateTimeZone.forID("Europe/Berlin")); 

    @Override 
    public void apply (TimeWindow window, Iterable<Tuple2<String, Integer>> values, 
         Collector<Tuple3<Integer, String, String>> out) throws Exception { 

     DateTime startTs = new DateTime(window.getStart(), DateTimeZone.forID("Europe/Berlin")); 
     DateTime endTs = new DateTime(window.getEnd(), DateTimeZone.forID("Europe/Berlin")); 

     int sum = 0; 
     for (Tuple2<String, Integer> value : values) { 
      sum += value.f1; 
     } 
     out.collect(new Tuple3<>(sum, startTs.toString(timeFormatter), endTs.toString(timeFormatter))); 
    } 
} 

在main()

msgStream.timeWindowAll(Time.of(6, TimeUnit.SECONDS)).apply(new SumAllWindow()).print();