Flink 編程接口(Flink SQL Table API DataStream API 和 DataSet API Stateful Stream Process API)


Flink 根據數據集類型的不同將核心數據處理接口分為兩大類,一類是支持批計算的接口DataSet API,另外一類是支持流計算的接口 DataStream API。同時 Flink將數據處理接口抽象成四層,由上向下分別為SQL APITable APIDataStream /DataSet API以及Stateful Stream Processing API,用戶可以根據需要選擇任意一層抽象接口來開發Flink應用。

Flink SQL

從下圖中可以看出,Flink提供了統一的SQL API完成對批計算和流計算的處理,目前SQL API也是社區重點發展的接口層,對SQL API也正在逐步完善中,其主要因為SQL語言具有比較低的學習成本,能夠讓數據分析人員和開發人員更快速地上手,幫助其更加專注於業務本身而不是受限於復雜的編程接口。而且在后期版本升級等底層架構發生變化時,能夠自如應對,無需修改。SQL 構建在 Table 之上,都需要構建 Table環境。

Table API

Table API將內存中的 DataStream和 DataSet數據集在原有的基礎之上增加 Schema信息,將數據類型統一抽象成表結構,然后通過Table API提供的接口處理對應的數據集。SQL API則可以直接查詢 Table API中注冊表中的數據表。Table API構建在DataStream和 DataSet之上的同時,提供了大量面向領域語言的編程接口,例如 GroupByKey、Join等操作符,提供給用戶一種更加友好的處理數據集的方式。除此之外,Table API在轉換為 DataStream和 DataSet的數據處理過程中,也應用了大量的優化規則對處理邏輯進行了優化。同時 Table API中的 Table可以和 DataStream 及 DataSet之間進行相互轉換。

DataStream API 和 DataSet API

DataStream API 和 DataSet API主要面向具有開發經驗的用戶,用戶可以使用DataStream API處理無界流數據,使用DataSet API處理批量數據。DataStream API和 DataSet API接口同時提供了各種數據處理接口,例如 map,filter、oins、aggregations、window等方法,同時每種接口都支持了Java、Scala及 Python等多種開發語言的SDK。

Stateful Stream Process API

Stateful Stream Process API是 Flink中處理 Stateful Stream最底層的接口,通過 process function 嵌入到 DataStream API 中。用戶可以使用 Stateful Stream Process 接口操作狀態、時間等底層數據。使用Stream Process API接口開發應用的靈活性非常強,可以實現非常復雜的流式計算邏輯,但是相對用戶使用成本也比較高。實際中,大多數應用程序並不需要最底層的stateful streaming,一般企業在使用 Flink進行二次開發或深度封裝的時候會用到這層接口。主要處理 events,state,time


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM