Apache Flink v1.8(概念-數據流編程模型)

抽象層次
Flink提供了不同級別的抽象來開發流/批處理應用程序。
在這裏插入圖片描述

  • 最低級抽象只提供有狀態流。它通過Process Function嵌入到DataStream API中。它允許用戶自由處理來自一個或多個流的事件,並使用一致的容錯狀態。此外,用戶可以註冊事件時間和處理時間回調,允許程序實現複雜的計算。
  • 在實踐中,大多數應用程序不需要上述低級抽象,而是針對Core API編程, 如DataStream API(有界/無界流)和DataSet API(有界數據集)。這些流暢的API提供了用於數據處理的通用構建塊,例如各種形式的用戶指定的轉換,連接,聚合,窗口,狀態等。在這些API中處理的數據類型在相應的編程語言中表示爲類。
    低級Process Function與DataStream API集成在一起,因此只能對某些操作進行低級抽象。該數據集API提供了有限數據集的其他原語,如循環/迭代。
  • Table API是爲中心的聲明性DSL表,其可被動態地改變的表(表示流時)。該表API遵循(擴展)關係模型:表有一個模式連接(類似於在關係數據庫中的表)和API提供可比的操作,如選擇,項目,連接,分組依據,聚合等表API程序以聲明方式定義應該執行的邏輯操作,而不是準確指定操作代碼的外觀。雖然Table API可以通過各種類型的用戶定義函數進行擴展,但它的表現力不如Core API,但使用更簡潔(編寫的代碼更少)。此外,Table API程序還會通過優化程序,在執行之前應用優化規則。

可以在表和DataStream / DataSet之間無縫轉換,允許程序混合Table API以及DataStream 和DataSet API。

Flink提供的最高級抽象是SQL。這種抽象在語義和表達方面類似於Table API,但是將程序表示爲SQL查詢表達式。在SQL抽象與表API緊密地相互作用,和SQL查詢可以通過定義表來執行表API。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章