Stream Processing with Apache Flink中文版-- 第11章 接下来学什么
这是一个漫长的旅程,你已经走到这本书的结尾了! 但是你的Flink之旅才刚刚开始,本章将为你指出可能的路径。我们将向您简要介绍这本书中没有包含的其他Flink功能,并提供一些更多Flink资源。在Flink周围有一个充满活力的社区,我们鼓励您与其他用户联系,开始做出贡献,或者了解哪些公司正在使用Flink来帮助激发您自己的工作。
Flink生态系统的其余部分
虽然这本书特别关注流处理,但实际上Flink是一个通用的分布式数据处理框架,可以用于其他类型的数据分析。此外,Flink还为关系查询、复杂事件处理(CEP)和图计算提供特定域的库和api。
用于批处理的DataSet API
Flink是一个成熟的批处理程序,可用于实现需要对有限输入数据进行一次性或周期性查询的用例。DataSet程序被指定为一系列转换,就像DataStream程序一样,不同之处在于DataSet是有界的数据集合。DataSet API提供操作符来执行筛选、映射、选择、连接和分组,以及从外部系统(如文件系统和数据库)读写数据集的连接器。使用DataSet API,您还可以定义循环的Flink程序,这些程序执行固定数量的步骤或直到满足收敛条件为止的循环函数。
批处理作业在内部表示为数据流程序,并在与流作业相同的底层执行环境上运行。目前,这两个api使用单独的执行环境,不能混合使用。然而,Flink社区已经在致力于统一这两者,并且在同一个程序中提供一个用于分析有界和无界数据流的单一API,这是Flink未来路线图中的优先事项。
用于关系分析的 Table API和SQL
即使底层的DataStream和DataSet API是独立的,您也可以使用其更高级的关系API( Table API和SQL)在Flink中实现统一的流和批处理分析。
Table API是用于Scala和Java的语言集成查询(LINQ) API。可以对批处理或流分析执行查询,而无需修改。它提供了编写关系查询(包括选择、投影、聚合和连接)的通用操作符,并且进一步提供了IDE对自动完成和语法验证的支持。
Flink SQL遵循ANSI SQL标准,利用Apache Calcite进行查询解析和优化。Flink为批处理和流查询提供统一的语法和语义。由于对用户定义函数的广泛支持,SQL可以涵盖各种各样的用例。您可以将SQL查询嵌入到常规的Flink DataSet和DataStream程序中,或者使用SQL CLI客户端直接向Flink集群提交SQL查询。CLI客户端允许在命令行中检索和可视化查询结果,这使它成为尝试和调试Flink SQL查询或在流数据或批数据上运行探索性查询的好工具。此外,您可以使用CLI客户端提交特定查询,这些查询直接将结果写入外部存储系统。
FlinkCEP用于复杂事件处理和模式匹配
FlinkCEP是用于复杂事件模式检测的高级API和库。它是在DataStream API之上实现的,允许指定希望在流中检测的模式。常见的CEP用例包括金融应用程序、欺诈检测、复杂系统中的监视和警报,以及检测网络入侵或可疑用户行为。
用于图计算的Gelly
Gelly是Flink的图计算API和库。它构建在 DataSet API和Flink对高效批处理迭代的支持之上。Gelly在Java和Scala中提供高级编程抽象,以执行图转换、聚合和迭代处理,如以vertex-centric和gather-sum-apply。它还包括一组可以使用的公共图算法。
请注意
Flink的高级api和接口彼此之间以及与DataStream和DataSet api之间集成得很好,因此您可以轻松地将它们混合在一起,并在同一个程序中的库和api之间进行切换。例如,您可以使用CEP库从DataStream中提取模式,然后使用SQL分析提取的模式,或者在使用Gelly库中的图算法分析表之前,使用Table API过滤并将表投影到图中。
一个受欢迎的社区
Apache Flink拥有一个不断增长的社区,欢迎来自世界各地的贡献者和用户。这里有一些资源,你可以用来提问,参加与Flink相关的活动,了解人们使用Flink的目的。
Stream Processing with Apache Flink中文版更新完毕!
如果您觉得作者翻译的内容有帮助,让您学到了Flink大数据知识,请分享给更多人,让更多人学到Flink大数据知识。您的分享,是作者翻译的动力!