직장에서 프로젝트에 flink를 시도하고 있습니다. 나는 count windowing을 적용하여 스트림을 처리하는 지점에 도달했습니다. 그러나 설명 할 수없는 특이한 동작을 발견했습니다.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");
누군가이 문제가 왜 발생하는지 설명해주세요. 어떻게 구성 할 수 있습니까? 결과 스트림을 분할해야하는 이유는 무엇입니까?
평행도 속도 (다중 스레드)에 유용하지만 왜 결과 스트림이 분할 되는가?
일반적으로 결과 스트림을 처리 후 단일 파일 또는 TCP 스트림 등으로 만들고 싶습니다. 수동으로 두 파일을 결합하고 단일 출력을 생성하는 일반적인 워크 플로입니까?
감사합니다.
감사합니다. 이제 모든 것이 명확 해집니다! – cmcaba