1. 程式人生 > 其它 >Stream Processing with Apache Flink中文版-- 第11章 接下來學什麼

Stream Processing with Apache Flink中文版-- 第11章 接下來學什麼

這是一個漫長的旅程,你已經走到這本書的結尾了! 但是你的Flink之旅才剛剛開始,本章將為你指出可能的路徑。我們將向您簡要介紹這本書中沒有包含的其他Flink功能,並提供一些更多Flink資源。在Flink周圍有一個充滿活力的社群,我們鼓勵您與其他使用者聯絡,開始做出貢獻,或者瞭解哪些公司正在使用Flink來幫助激發您自己的工作。

Flink生態系統的其餘部分

雖然這本書特別關注流處理,但實際上Flink是一個通用的分散式資料處理框架,可以用於其他型別的資料分析。此外,Flink還為關係查詢、複雜事件處理(CEP)和圖計算提供特定域的庫和api。

用於批處理的DataSet API

Flink是一個成熟的批處理程式,可用於實現需要對有限輸入資料進行一次性或週期性查詢的用例。DataSet程式被指定為一系列轉換,就像DataStream程式一樣,不同之處在於DataSet是有界的資料集合。DataSet API提供操作符來執行篩選、對映、選擇、連線和分組,以及從外部系統(如檔案系統和資料庫)讀寫資料集的聯結器。使用DataSet API,您還可以定義迴圈的Flink程式,這些程式執行固定數量的步驟或直到滿足收斂條件為止的迴圈函式。

批處理作業在內部表示為資料流程式,並在與流作業相同的底層執行環境上執行。目前,這兩個api使用單獨的執行環境,不能混合使用。然而,Flink社群已經在致力於統一這兩者,並且在同一個程式中提供一個用於分析有界和無界資料流的單一API,這是Flink未來路線圖中的優先事項。

用於關係分析的 Table API和SQL

即使底層的DataStream和DataSet API是獨立的,您也可以使用其更高階的關係API( Table API和SQL)在Flink中實現統一的流和批處理分析。

Table API是用於Scala和Java的語言整合查詢(LINQ) API。可以對批處理或流分析執行查詢,而無需修改。它提供了編寫關係查詢(包括選擇、投影、聚合和連線)的通用操作符,並且進一步提供了IDE對自動完成和語法驗證的支援。

Flink SQL遵循ANSI SQL標準,利用Apache Calcite進行查詢解析和優化。Flink為批處理和流查詢提供統一的語法和語義。由於對使用者定義函式的廣泛支援,SQL可以涵蓋各種各樣的用例。您可以將SQL查詢嵌入到常規的Flink DataSet和DataStream程式中,或者使用SQL CLI客戶端直接向Flink叢集提交SQL查詢。CLI客戶端允許在命令列中檢索和視覺化查詢結果,這使它成為嘗試和除錯Flink SQL查詢或在流資料或批資料上執行探索性查詢的好工具。此外,您可以使用CLI客戶端提交特定查詢,這些查詢直接將結果寫入外部儲存系統。

FlinkCEP用於複雜事件處理和模式匹配

FlinkCEP是用於複雜事件模式檢測的高階API和庫。它是在DataStream API之上實現的,允許指定希望在流中檢測的模式。常見的CEP用例包括金融應用程式、欺詐檢測、複雜系統中的監視和警報,以及檢測網路入侵或可疑使用者行為。

用於圖計算的Gelly

Gelly是Flink的圖計算API和庫。它構建在 DataSet API和Flink對高效批處理迭代的支援之上。Gelly在Java和Scala中提供高階程式設計抽象,以執行圖轉換、聚合和迭代處理,如以vertex-centric和gather-sum-apply。它還包括一組可以使用的公共圖演算法。

請注意

Flink的高階api和介面彼此之間以及與DataStream和DataSetapi之間整合得很好,因此您可以輕鬆地將它們混合在一起,並在同一個程式中的庫和api之間進行切換。例如,您可以使用CEP庫從DataStream中提取模式,然後使用SQL分析提取的模式,或者在使用Gelly庫中的圖演算法分析表之前,使用TableAPI過濾並將表投影到圖中。

一個受歡迎的社群

Apache Flink擁有一個不斷增長的社群,歡迎來自世界各地的貢獻者和使用者。這裡有一些資源,你可以用來提問,參加與Flink相關的活動,瞭解人們使用Flink的目的。

Stream Processing with Apache Flink中文版更新完畢!

如果您覺得作者翻譯的內容有幫助,讓您學到了Flink大資料知識,請分享給更多人,讓更多人學到Flink大資料知識。您的分享,是作者翻譯的動力!