
- Apache Flink 教程
- Apache Flink - 首頁
- Apache Flink - 大資料平臺
- 批處理與即時處理
- Apache Flink - 簡介
- Apache Flink - 架構
- Apache Flink - 系統要求
- Apache Flink - 設定/安裝
- Apache Flink - API 概念
- Apache Flink - Table API 和 SQL
- 建立 Flink 應用程式
- Apache Flink - 執行 Flink 程式
- Apache Flink - 庫
- Apache Flink - 機器學習
- Apache Flink - 使用案例
- Apache Flink - Flink vs Spark vs Hadoop
- Apache Flink - 總結
- Apache Flink 資源
- Apache Flink - 快速指南
- Apache Flink - 有用資源
- Apache Flink - 討論
Apache Flink - 庫
本章我們將學習 Apache Flink 的不同庫。
複雜事件處理 (CEP)
FlinkCEP 是 Apache Flink 中的一個 API,用於分析持續流資料上的事件模式。這些事件接近即時,具有高吞吐量和低延遲。此 API 主要用於感測器資料,這些資料即時傳入,處理起來非常複雜。
CEP 分析輸入流的模式並很快給出結果。它能夠在事件模式複雜的情況下提供即時通知和警報。FlinkCEP 可以連線到不同型別的輸入源並在其中分析模式。
這就是帶有 CEP 的示例架構:

感測器資料將來自不同的來源,Kafka 將充當分散式訊息框架,它將流分發到 Apache Flink,而 FlinkCEP 將分析複雜的事件模式。
您可以使用 Pattern API 在 Apache Flink 中編寫用於複雜事件處理的程式。它允許您確定要從持續流資料中檢測到的事件模式。以下是一些最常用的 CEP 模式:
開始 (Begin)
用於定義起始狀態。下面的程式顯示瞭如何在 Flink 程式中定義它:
Pattern<Event, ?> next = start.next("next");
其中 (Where)
用於在當前狀態中定義過濾器條件。
patternState.where(new FilterFunction <Event>() { @Override public boolean filter(Event value) throws Exception { } });
下一頁
用於追加新的模式狀態和透過先前模式所需的匹配事件。
Pattern<Event, ?> next = start.next("next");
跟隨 (FollowedBy)
用於追加新的模式狀態,但此處兩個匹配事件之間可以發生其他事件。
Pattern<Event, ?> followedBy = start.followedBy("next");
Gelly
Apache Flink 的圖 API 是 Gelly。Gelly 用於使用一組方法和實用程式在 Flink 應用程式上執行圖分析。您可以使用 Apache Flink API 和 Gelly 以分散式方式分析大型圖。還有其他相簿,例如 Apache Giraph 也用於相同目的,但由於 Gelly 建立在 Apache Flink 之上,因此它使用單一 API。這從開發和操作的角度來看非常有用。
讓我們使用 Apache Flink API - Gelly 執行一個示例。
首先,您需要將 2 個 Gelly jar 檔案從 Apache Flink 的 opt 目錄複製到其 lib 目錄。然後執行 flink-gelly-examples jar。
cp opt/flink-gelly* lib/ ./bin/flink run examples/gelly/flink-gelly-examples_*.jar

現在讓我們執行 PageRank 示例。
PageRank 計算每個頂點的分數,它是透過入邊傳輸的 PageRank 分數之和。每個頂點的分數平均分配給出邊。高分頂點與其他高分頂點連結。
結果包含頂點 ID 和 PageRank 分數。
usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options] ./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print
