Thanks Stefan, But how the Process function will have these watermarks? I have sliding windows like below
final DataStream<WindowStats> eventStream = inputStream .keyBy(TENANT, CATEGORY) .window(SlidingProcessingTimeWindows.of(Time.minutes(100,Time.minutes(5))) .fold(new WindowStats(), new ProductAggregationMapper(), new ProductAggregationWindowFunction()); Window results are coming every 5 minutes after first window output. How the process function would know that all the windows for a Tenant have finished for a giving start and end time. Thanks for help. Cheers, On 22 June 2017 at 14:37, Stefan Richter <s.rich...@data-artisans.com> wrote: > Hi, > > one possible approach could be that you have a process function before the > sink. Process function is aware of watermarks, so it can collect and buffer > window results until it sees a watermark. This is the signal that all > results for windows with an end time smaller than the watermark are > complete. They can then be aggregated and send to the sink. > > Best, > Stefan > > > Am 22.06.2017 um 15:15 schrieb Ahmad Hassan <ahmad.has...@gmail.com>: > > > > Hi All, > > > > I am using categoryID as a keyby attribute for creating keyed stream > from a product event stream. Keyed stream then creates time windows for > each category. However, when the window time expires, i want to write the > output data of all the products in all all categories in a single atomic > operation collectively. Is there a way to call a single sink function for > all the windows with same start and end time. Or is there a way in flink to > know that all windows with same end time have finished processing their > sink function? > > > > Currently, each window calls sink function individually. > > > > cheers, > > > >