2017-10-13 278 views
0

我不明白StreamExecutionEnvironment.readFile方法。 FileProcessingMode有2个选项:PROCESS_ONCE和PROCESS_CONTINUOUSLY。如果我们选择前者,它只处理一次文件,并在execute()后退出。如果我们选择后者,即使我们只是在文件中添加一些行,它会再次处理整个文件(添加所有文件,例如,在最后一次处理之前的每个单词的计数)。我认为这就像'尾巴',它只是从“流”中读取更多的东西,而不是一次又一次地读取。我迷失了这个“流媒体”。任何人都可以解释为什么我们没有'tail'这样的东西来处理文件只是'一次',并且在文件被添加更多文本(如日志文件)时继续进行?Flink FileProcessingMode令人费解

回答

0

使用PROCESS_CONTINUOUSLY,Flink将时间戳记保存为状态,并摄取比时间戳更新的任何文件。您的观察结果是准确的,但有一个情况很好。如果将PROCESS_CONTINUOUSLY用于目录而不是文件,并且在完成并准备好处理文件时将文件定期移动到该目录中,那么您可以获得“完全一次”的行为。