Apache Flink - 庫



本章我們將學習 Apache Flink 的不同庫。

複雜事件處理 (CEP)

FlinkCEP 是 Apache Flink 中的一個 API,用於分析持續流資料上的事件模式。這些事件接近即時,具有高吞吐量和低延遲。此 API 主要用於感測器資料,這些資料即時傳入,處理起來非常複雜。

CEP 分析輸入流的模式並很快給出結果。它能夠在事件模式複雜的情況下提供即時通知和警報。FlinkCEP 可以連線到不同型別的輸入源並在其中分析模式。

這就是帶有 CEP 的示例架構:

architecture with 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 
Gelly

現在讓我們執行 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 
PageRank score
廣告