Flink 库

  • Flink 库

    在本章中,我们将学习Apache Flink的不同库。
  • 复杂事件处理(CEP)

    FlinkCEP是Apache Flink中的API,可分析连续流数据上的事件模式。这些事件接近实时,具有高吞吐量和低延迟。该API主要用于实时传输的传感器数据,处理过程非常复杂。CEP分析输入流的模式并很快给出结果。在事件模式复杂的情况下,它具有提供实时通知和警报的能力。FlinkCEP可以连接到不同种类的输入源并分析其中的模式。
    这就是带有CEP的示例架构的样子-
    flink
    传感器数据将来自不同的来源,Kafka将充当分布式消息传递框架,它将消息流分发到Apache Flink,而FlinkCEP将分析复杂的事件模式。
    您可以使用Pattern API在Apache Flink中编写用于复杂事件处理的程序。它使您可以决定要从连续流数据中检测到的事件模式。以下是一些最常用的CEP模式-
    start
    用于定义启动状态。以下程序显示了如何在Flink程序中定义它-
    
    Pattern<Event, ?> next = start.next("next");
    
    where
    用于定义当前状态下的过滤条件。
    
    patternState.where(new FilterFunction <Event>() {  
       @Override 
          public boolean filter(Event value) throws Exception { 
       } 
    });
    
    next
    它用于附加新的模式状态和传递先前模式所需的匹配事件。
    
    Pattern<Event, ?> next = start.next("next");
    
    FollowedBy
    它用于附加新的模式状态,但此处其他事件可能在两个匹配事件之间发生。
    
    Pattern<Event, ?> next = start.next("next");
    
    Gelly
    Apache Flink的Graph API是Gelly。Gelly用于使用一组方法和实用程序对Flink应用程序执行图形分析。您可以使用Gelly以分布式方式使用Apache Flink API分析巨大的图形。出于相同的目的,还有其他图形库,例如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 
    
    flink
    现在让我们运行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 
    
    flink