2017-10-13 318 views
0

我不明白StreamExecutionEnvironment.readFile方法。 FileProcessingMode有2個選項:PROCESS_ONCE和PROCESS_CONTINUOUSLY。如果我們選擇前者,它只處理一次文件,並在execute()後退出。如果我們選擇後者,即使我們只是在文件中添加一些行,它會再次處理整個文件(添加所有文件,例如,在最後一次處理之前的每個單詞的計數)。我認爲這就像'尾巴',它只是從「流」中讀取更多的東西,而不是一次又一次地讀取。我迷失了這個「流媒體」。任何人都可以解釋爲什麼我們沒有'tail'這樣的東西來處理文件只是'一次',並且在文件被添加更多文本(如日誌文件)時繼續進行?Flink FileProcessingMode令人費解

回答

0

使用PROCESS_CONTINUOUSLY,Flink將時間戳記保存爲狀態,並攝取比時間戳更新的任何文件。您的觀察結果是準確的,但有一個情況很好。如果將PROCESS_CONTINUOUSLY用於目錄而不是文件,並且在完成並準備好處理文件時將文件定期移動到該目錄中,那麼您可以獲得「完全一次」的行爲。