Apache flink Flink如何确保操作员之间的数据顺序?

Apache flink Flink如何确保操作员之间的数据顺序?,apache-flink,flink-streaming,flink-sql,Apache Flink,Flink Streaming,Flink Sql,在流媒体系统中,数据的顺序是一个大问题 我们知道,在flink中,处理无序数据是使用窗口和水印 但是,在内部flink中,在操作符之间,如何保证数据的顺序 flink能否确保高级数据可以首先处理 或者在运算符中,数据的顺序是无序的在Flink中,无法保证数据顺序得到保留(或者至少在并行度>1时不能保证)。例如,您有一个具有map()运算符且并行度==2的流,然后执行groupBy(),然后执行其他一些操作。在一台服务器上,map子任务处理数据的速度非常快,而在另一台服务器上则非常慢。groupB

在流媒体系统中,数据的顺序是一个大问题

我们知道,在flink中,处理无序数据是使用窗口和水印

但是,在内部flink中,在操作符之间,如何保证数据的顺序

flink能否确保高级数据可以首先处理


或者在运算符中,数据的顺序是无序的

在Flink中,无法保证数据顺序得到保留(或者至少在并行度>1时不能保证)。例如,您有一个具有
map()
运算符且并行度==2的流,然后执行
groupBy()
,然后执行其他一些操作。在一台服务器上,map子任务处理数据的速度非常快,而在另一台服务器上则非常慢。groupBy之后每个分区接收数据的顺序显然与数据的原始顺序不匹配

如果您需要严格的排序,那么您必须在操作符中对自己进行缓冲/排序,并处理与窗口操作符遇到的相同的延迟数据问题(即,您需要多长时间才能确定您不可能获得一条应该在缓冲区中的最后一条记录之前排序的记录)