当 flink 中以批处理模式执行作业时,fileSink 按并行数生成多个文件,但我只想在一个文件中输出而不更改并行数,我该怎么做?
将parallel 放入5 中,FileSink 的输出中仅得到一个文件。
OutputFileConfig config = OutputFileConfig
.builder()
.withPartPrefix("prefix")
.withPartSuffix(".txt")
.build();
final FileSink<String> sinkfile = FileSink
.forRowFormat(new Path("src/main/resources/output"), new SimpleStringEncoder<String>("UTF-8"))
.withBucketAssigner(new BasePathBucketAssigner<>())
.withOutputFileConfig(config)
.build();
您可以将接收器的并行度减少到 1,同时将管道的其余部分保留为 5。这样您就只有一个输出流。如果您确实需要将接收器扩展到 5 个实例,那么它们将独立运行,并创建 5 个独立的输出流。