Я пытаюсь flink для проекта на работе. Я дошел до того, что обрабатываю поток, применяя окно подсчета и т. д. Однако я заметил странное поведение, которое не могу объяснить.
Создается впечатление, что поток обрабатывается двумя потоками, и вывод тоже делится на две части.
Сначала я заметил поведение при выводе потока на стандартную консоль с помощью 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 и т. д. Является ли нормальным рабочим процессом ручное объединение двух файлов и создание одного вывода?
Спасибо!