鐵人賽也過了一半了,今天來換主題,講 Flink。
Airflow 雖然好用,但它本質上是專注在排程管理的系統,可以的話,他希望你將複雜的計算交給更適合的工具,像 spark, Flink, GCP pipeline 等等。而且即使用 Airflow 做 ETL,它基本上是個 batch 式的工具,對 streaming 的處理沒那麼方便,這時候我們就需要 Flink 來協助了。
Flink是一個開源的流式數據處理框架,它的特點是能夠處理實時數據,而且非常強大。它的主要目的是處理和分析大規模的數據流,這些數據可能來自各種來源,比如傳感器、日誌文件、社交媒體等等。
Flink支持多種編程語言,包括Java和Python,這使得它對於不同技術背景的工程師都很友好。你可以使用這些語言來編寫Flink應用程序,處理和轉換數據。
其中一個Flink的重要特點是它的事件時間處理能力。這意味著你可以處理帶有時間戳的數據,這在處理實時事件時非常重要,比如分析應用程序日誌或監控傳感器數據。
此外,Flink還提供了強大的狀態管理,這對於處理長時間運行的應用程序非常有用。你可以保存和管理應用程序的狀態,這樣即使應用程序出現故障,也可以輕鬆地恢復。
總之,Flink是一個功能豐富的數據處理框架,它可以幫助工程師處理實時數據,並從中獲得有價值的信息。如果你需要處理大量的實時數據,Flink絕對值得一試。
缺點:
在我的經驗中,如果你的資料源是 streaming 而且很需要有狀態管理的話,那麼 Flink 會非常適合。舉例來說,每分鐘計算一次過去 30 分鐘的股票交易量最大值,如果用 batch 的寫法,那我們會需要有一個地方儲存 30 分鐘內的交易量,並加上 timestamp,才有辦法處理。但在 Flink 內因為他有狀態,所以你可以存 30 分鐘的資料在 memory 內,並輕鬆的處理這個 TimeWindow 。
怎麼做,下集待續。