为什么流的顺序与原始文件不同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么流的顺序与原始文件不同?相关的知识,希望对你有一定的参考价值。

我正在尝试测试如下的简单flink代码。原始数据集的序列是 1,2,3,4.

读取文件后,流的顺序是 "1,4,2,3"。而且,每次测试的顺序都不一样。

如何修正输入数据集的顺序,使之与原来的上下文相同?

下面是我的simpel代码。

   DataStreamSource<Integer> integerDataStreamSource = env.fromElements(1, 2, 3, 4);
   integerDataStreamSource.print(); 
答案

输出流的顺序是非决定性的,因为打印汇流是并行运行的,这些并行实例之间是相互竞争的。如果您想避免这种情况,可以将整个作业或打印汇流操作者的并行度设置为1。

env.setParallelism(1);
DataStreamSource<Integer> integerDataStreamSource = env.fromElements(1, 2, 3, 4);
integerDataStreamSource.print(); 

以上是关于为什么流的顺序与原始文件不同?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不关闭底层流的情况下关闭 Writer?

Java生成二进制文件与Postman以二进制流的形式发送请求

java 字节流与字符流的区别(转)

java 字节流与字符流的区别

java 字节流与字符流的区别

Java字节流与字符流的区别