Yes, it's possible to sort a stream by the event time timestamps on
the events. This depends on having reliable watermarks -- as events
that are late can not be emitted in order.

There are several ways to accomplish this. You could, for example, use
a ProcessFunction, and implement the sorting yourself, or use a
Window, or take advantage of the sorting that's already been
implemented in either the SQL or CEP libraries.

For example of doing this with windows, see
https://stackoverflow.com/questions/58539379/guarantee-of-event-time-order-in-flinkkafkaconsumer.
For an implementation using SQL, see
https://stackoverflow.com/a/54970489/2000823. For an implementation
using the CEP library, including the use of side outputs for late
events, see 
https://github.com/ververica/flink-training-exercises/blob/master/src/main/java/com/ververica/flinktraining/examples/datastream_java/cep/Sort.java.

Best,
David

On Fri, Nov 1, 2019 at 10:21 PM Vishwas Siravara <vsirav...@gmail.com> wrote:
>
> Hi guys,
> I want to know if it's possible to sort events in a flink data stream. I know 
> I can't sort a stream but is there a way in which I can buffer for a very 
> short time and sort those events before sending it to a data sink.
>
> In our scenario we consume from a kafka topic which has multiple partitions 
> but the data in these brokers are not partitioned by a key(its round robin) , 
> for example we want to time order transactions associated with a particular 
> account but since the same account number ends up in different partitions at 
> the source for different transactions we are not able to maintain event time 
> order in our stream processing system since the same account number ends up 
> in different task managers and slots. We do however partition by account 
> number when we send the events to downstream kafka sink so that transactions 
> from the same account number end up in the same partition. This is however 
> not good enough since the events are not sorted at the source.
>
> Any ideas for doing this is much appreciated.
>
>
> Best,
> Vishwas

Reply via email to