我試圖在工作中使用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