- 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