Yes, that's ensured by the watermark mechanism [1]. An operator advances its watermark to the minimum of the last received watermark of each input channel. So the event-time of an operator won't advanced past the end time of a window until the watermarks (and results) of all window subtasks have been received.
[1] https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/event_time.html#event-time-and-watermarks 2017-12-18 12:09 GMT+01:00 Jinhua Luo <luajit...@gmail.com>: > Maybe the "merge" is not accurate. > In fact, I mean the downstream would receive results from all logical > window, right? > Then how flink align the results on the timestamp? i.e. if one of the > logical window emits the result to the downstream, then how downstream > treats the timestamp and watermark of the result? > It would wait for other logical windows emit results belonging to the > same window? > > 2017-12-18 18:51 GMT+08:00 Fabian Hueske <fhue...@gmail.com>: > > If you define a keyed window (use keyBy()), the results are not merged. > > For each key, the window is individually evaluated and all results of > > windows for the same time have the same timestamp. > > > > 2017-12-18 11:30 GMT+01:00 Jinhua Luo <luajit...@gmail.com>: > >> > >> Thanks. > >> > >> The keyBy() splits the stream into multiple logical streams, if I do > >> timeWindow(), then how flink merge all logical windows into one? > >> When does the window functions get invoked? at the same time? or > >> individually but flink wait for all window functions finished and > >> merge the results? > >> > >> > >> 2017-12-18 18:02 GMT+08:00 Fabian Hueske <fhue...@gmail.com>: > >> > Hi, > >> > > >> > timestamps are handled as meta-data in Flink's DataStream API. > >> > This means that Flink automatically maintains the timestamps and > ensures > >> > that all records which were aligned with the watermarks (i.e., not > late) > >> > are > >> > still aligned. > >> > If records are aggregated in a time window, the aggregation results > has > >> > the > >> > maximum allowed timestamp of the window. For example a tumbling window > >> > of > >> > size 1 hour that starts at 14:00 emits its results with a timestamp of > >> > 14:59:59.999. > >> > > >> > Best, Fabian > >> > > >> > 2017-12-16 9:01 GMT+01:00 Jinhua Luo <luajit...@gmail.com>: > >> >> > >> >> Hi All, > >> >> > >> >> The timestamp assigner is for one type, normally for the type from > the > >> >> source, but after several operators, the element type would change > and > >> >> the elements would be aggregated, if I do timeWindow again, how flink > >> >> extracts timestamp from elements? For example, the fold operators > >> >> aggregate 10 source elements into one, it would copy the last > >> >> element's timestamp to the result element? > >> > > >> > > > > > >