我试图在工作中使用flink。我已经达到了通过应用计数窗口等来处理流的点。但是,我注意到了一个奇特的行为,这是我无法解释的。Flink将SingleOutputStreamOperator写入两个文件而不是一个
似乎一个流由两个线程处理,并且输出也分为两部分。
首先我注意到使用stream.print()
将流打印到标准控制台时的行为。
然后,我打印到一个文件,它实际上打印在输出文件夹中名为1
和2
的两个文件中。
SingleOutputStreamOperator<Tuple3<String, String,String>> c = stream_with_no_err.countWindow(4).apply(new CountPerWindowFunction());
// c.print() // this olso prints two streams in the standard console
c.writeAsCsv("output");
有人可以请解释为什么这种行为在flink?我如何配置它?为什么需要将结果流拆分?并行性我理解为对速度(多线程)有用,但为什么产生的流会分裂?
通常,我想将生成的流(处理后)作为单个文件或tcp流等。正常的工作流程是手动合并这两个文件并生成单个输出吗?
谢谢!
谢谢!一切都清楚了! – cmcaba