Apache Flink社区宣布Apache Flink 1.7.0发布。 最新版本包括超过420个已解决的问题以及Flink的一些新增内容,About云将在本文的以下部分中对其进行描述。
一、概述
在Flink 1.7.0中,更接近实现快速数据处理和以无缝方式为Flink社区实现构建数据密集型应用程序的目标。 最新版本包括一些新功能和改进,例如对Scala 2.12的支持, exactly-once S3文件sink,复杂事件处理与流SQL的集成,下面有更多功能。
二、新功能和改进
1.Flink支持Scala 2.12:
Apache Flink 1.7.0是第一个完全支持Scala 2.12的版本。 这允许用户使用较新的Scala版本编写Flink应用程序,并利用Scala 2.12生态系统。
2.支持状态演变
在许多情况下,由于需求的变化,长期运行的Flink应用程序需要在其生命周期内变化。在不丢失当前应用程序进度的状态下更改用户状态是应用程序发展的关键要求。
通过Flink 1.7.0,社区添加了状态演变,允许灵活地调整长时间运行的应用程序的用户状态模式,同时保持与先前保存点的兼容性。通过状态演变,可以在状态模式中添加或删除列,以便更改应用程序部署后应捕获的业务功能。
当使用Avro生成的类作为用户状态时,状态模式演变现在可以开箱即用,这意味着状态模式可以根据Avro的规范进行演变。虽然Avro类型是Flink 1.7中唯一支持模式演变的内置类型,但社区在未来的Flink版本中进一步扩展对其他类型的支持。
3.S3 StreamingFileSink实现Exactly-once
Flink 1.6.0中引入的StreamingFileSink现在已经扩展到支持写入S3文件系统,只需一次处理保证。 使用此功能允许用户构建写入S3的一次性端到端管道。
4.Streaming SQL支持MATCH_RECOGNIZE
这是Apache Flink 1.7.0的一个重要补充,它为Flink SQL提供了MATCH_RECOGNIZE标准的初始支持。 此功能结合了复杂事件处理(CEP)和SQL,可以轻松地在数据流上进行模式匹配,从而实现一整套新的用例。【此功能处于测试阶段】
5.支持Flink SQL / Table API中的富集连接
时态(Temporal )表是Apache Flink中的一个新概念,它为表的更改历史提供(参数化)视图,并在特定时间点返回表的内容。
例如,我们可以使用具有历史货币汇率的表格。 随着时间的推移,这种表格不断增长/变化,并且增加了新的更新汇率。 时态(Temporal )表是一种视图,可以将这些汇率的实际状态返回到任何给定的时间点。 使用这样的表格,可以使用正确的汇率将不同货币的订单流转换为通用货币。
Temporal Joins允许使用处理时间或事件时间,在符合ANSI SQL的情况下,使用不断变化/更新的表来进行内存和计算效率的Streaming数据连接。
6.流式SQL的其他功能
除了上面提到的主要功能外,Flink的Table&SQL API已经扩展到更多用例。
API中添加了以下内置函数:TO_BASE64,LOG2,LTRIM,REPEAT,REPLACE,COSH,SINH,TANH
SQL Client现在支持在环境文件和CLI会话中定义视图。 此外,CLI中还添加了基本的SQL语句自动完成功能。
社区添加了一个 Elasticsearch 6 table sink,它允许存储动态表的更新结果。
7.版本化REST API
从Flink 1.7.0开始,REST API已经版本化。 这保证了Flink REST API的稳定性,因此可以在Flink中针对稳定的API开发第三方应用程序。 因此,未来的Flink升级不需要更改现有的第三方集成。
8.Kafka 2.0连接器
Apache Flink 1.7.0继续添加更多连接器(Connector ),使其更容易与更多外部系统进行交互。 在此版本中,社区添加了Kafka 2.0连接器,该连接器允许通过一次性保证读取和写入Kafka 2.0。
9.本地恢复
Apache Flink 1.7.0通过扩展Flink的调度来完成本地恢复功能,以便在恢复时考虑先前的部署位置。
如果启用了本地恢复,Flink将在运行任务的计算机上保留最新检查点的本地副本。 通过将任务调度到以前的位置,Flink将通过从本地磁盘读取检查点状态来最小化恢复状态的网络流量。 此功能大大提高了恢复速度。
10.删除Flink的传统模式
Apache Flink 1.7.0标志着Flip-6工作已完全完成并且与传统模式达到功能奇偶校验的版本。 因此,此版本删除了对传统模式的支持。如果想使用传统模式,可以使用Flink1.6.