- Flink原理深入與編程實戰:Scala+Java(微課視頻版)
- 辛立偉編著
- 597字
- 2023-07-17 18:54:41
3.1.2 流應用程序實現
Flink程序的基本構建塊是stream和transformation(流和轉換)。從概念上講,stream是數據記錄的流(可能永遠不會結束),transformation是一個運算,它接收一個或多個流作為輸入,經過處理/計算后生成一個或多個輸出流。
下面實現一個完整的可工作的Flink流應用程序示例。
【示例3-1】 將有關人員的記錄流作為輸入,并從中篩選出未成年人信息。
Scala代碼如下:
(1)在IntelliJ IDEA中創建一個Flink項目,使用flink-quickstart-scala項目模板(Flink項目的創建過程可參考2.2節)。
(2)設置依賴。在pom.xml文件中添加以下依賴內容:

(3)創建主程序StreamingJobDemo1,編輯流處理代碼如下:

執行以上代碼,輸出結果如下:

Java代碼如下:
(1)在IntelliJ IDEA中創建一個Flink項目,使用flink-quickstart-Java項目模板(Flink項目的創建過程可參考2.2節)。
(2)設置依賴。在pom.xml文件中添加以下依賴內容:

(3)創建一個POJO類,用來表示流中的數據,代碼如下:

(4)打開項目中的StreamingJob對象文件,編輯流處理代碼如下:

(5)執行以上程序,輸出結果如下。

注意:Flink將批處理程序作為流程序的一種特殊情況執行,其中流是有界的(有限數量的元素)。DataSet在內部被視為數據流,因此,上述概念同樣適用于批處理程序,也適用于流程序,只有少數例外:
(1)批處理程序的容錯不使用檢查點。錯誤恢復是通過完全重放流實現的,這使恢復的成本更高,但是因為它避免了檢查點,所以使常規處理更輕量。
(2)DataSet API中的有狀態運算使用簡化的in-memory/out-of-核數據結構,而不是key-value索引。
(3)DataSet API引入了特殊的同步(基于superstep)迭代,這只可能在有界流上實現。
- UI設計基礎培訓教程
- TypeScript Essentials
- Learning C# by Developing Games with Unity 2020
- 大學計算機基礎實驗教程
- 從程序員到架構師:大數據量、緩存、高并發、微服務、多團隊協同等核心場景實戰
- HTML5游戲開發案例教程
- Expert Android Programming
- 青少年Python編程入門
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- Learning OpenStack Networking(Neutron)(Second Edition)
- Microsoft Azure Storage Essentials
- 持續輕量級Java EE開發:編寫可測試的代碼
- Solr權威指南(下卷)
- 量子計算機編程:從入門到實踐
- RESTful Web API Design with Node.js