您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Flink中編程模型的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
flink是一款開源的大數據流式處理框架,他可以同時批處理和流處理,具有容錯性、高吞吐、低延遲等優勢。
無窮數據集:無窮的持續集成的數據集合
有界數據集:有限不會改變的數據集合
常見的無窮數據集有:
用戶與客戶端的實時交互數據
應用實時產生的日志
金融市場的實時交易記錄
…
流式:只要數據一直在生產,計算就持續地運行
批處理:在預先定義的時間內運行計算,當完成時候釋放計算機資源
Flink它可以處理有界的數據集,也可以處理無界的數據集,它可以流式的處理數據,也可以批量的處理數據。
從下至上:
1、部署:Flink 支持本地運行、能在獨立集群或者在被 YARN 或 Mesos 管理的集群上運行, 也能部署在云上。2、運行:Flink 的核心是分布式流式數據引擎,意味著數據以一次一個事件的形式被處理。3、API:DataStream、DataSet、Table、SQL API。4、擴展庫:Flink 還包括用于復雜事件處理,機器學習,圖形處理和 Apache Storm 兼容性的專用代碼庫。
抽象級別 Flink提供了不同的抽象級別以開發流式或者批處理應用
最底層提供了有狀態流,它將通過過程函數嵌入到DataStream API中,它允許用戶可以自由地處理來自一個或者多個流數據的事件,并使用一致、容錯的狀態。除此之外,用戶可以注冊事件時間和處理事件回調,從而使程序可以實現復雜的計算。
DataStream / DataSet API 是 Flink 提供的核心 API ,DataSet 處理有界的數據集,DataStream 處理有界或者無界的數據流。用戶可以通過各種方法(map / flatmap / window / keyby / sum / max / min / avg / join 等)將數據進行轉換 / 計算。
Table API 是以 表 為中心的聲明式 DSL,其中表可能會動態變化(在表達流數據時)。Table API 提供了例如 select、project、join、group-by、aggregate 等操作,使用起來卻更加簡潔(代碼量更少)。
你可以在表與 DataStream/DataSet 之間無縫切換,也允許程序將 Table API 與 DataStream 以及 DataSet 混合使用。
Flink 提供的最高層級的抽象是 SQL 。這一層抽象在語法與表達能力上與 Table API 類似,但是是以 SQL查詢表達式的形式表現程序。SQL 抽象與 Table API 交互密切,同時 SQL 查詢可以直接在 Table API 定義的表上執行。
Flink 應用程序結構就是如上圖所示:
Source: 數據源,Flink 在流處理和批處理上的 source 大概有 4 類:基于本地集合的 source、基于文件的 source、基于網絡套接字的 source、自定義的 source。自定義的 source 常見的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,當然你也可以定義自己的 source。
Transformation:數據轉換的各種操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以將數據轉換計算成你想要的數據。
Sink:接收器,Flink 將轉換計算后的數據發送的地點 ,你可能需要存儲下來,Flink 常見的 Sink 大概有如下幾類:寫入文件、打印出來、寫入 socket 、自定義的 sink 。自定義的 sink 常見的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定義自己的 sink。
感謝各位的閱讀!關于“Flink中編程模型的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。