我正在使用来自Kafka
的数据,我需要将流写入我的本地文件和Flume
侦听的端口
代码可以按预期运行,如下所示:
streamSource.writeToSocket("192.168.95.11", 9158, new SimpleStringSchema());
streamSource.writeAsText("/tmp/flink_output.txt").setParallelism(1);
但是,当端口关闭时,整个 flink 任务将停止。有没有办法让它们单独运行:当端口关闭时,writeToSocket
writeAsText
照常运行时会不断重新运行?
为此,如果两者使用相同的源,那么从本应写入套接字的源读取的数据必须缓冲在能够吸收无限量数据的地方 - 或者必须删除该数据。
或者,您可以将两个管道分开,并使它们彼此完全独立。这可以通过两个单独的作业或一个具有完全分离管道的作业来完成,在这种情况下,一个作业的故障不会重新启动另一个作业。请参阅 Flink 1.9 发行说明中的故障转移策略和管道区域故障转移策略。
您需要执行以下操作:
source1.writeToSocket(...)
source2.writeAsText(...)
在这里,source1 和 source2 是两个独立的 kafka 使用者,独立于同一主题阅读。