乐趣区

关于apache:Pulsar-Flink-Connector-250-正式发布

通过一直地致力,社区胜利公布 Pulsar Flink Connector 2.5.0 版本。Pulsar Flink Connector 集成了 Apache Pulsar 和 Apache Flink(数据处理引擎),容许 Apache Flink 向 Apache Pulsar 读写数据。

我的项目地址:https://github.com/streamnati…

上面将具体介绍 Pulsar Flink Connector 2.5.0 引入的新个性,心愿可能帮忙大家更好地了解 Pulsar Flink Connector。

背景

Flink 是一款疾速倒退的分布式计算引擎,在 1.11 版本中,反对以下新个性:

  • 外围引擎引入了非对齐的 Checkpoint 机制。这一机制明显改善了 Flink 容错机制,它能够进步重大反压作业的 Checkpoint 速度。
  • 提供一套新的 Source 接口。通过对立流和批作业 Source 的运行机制,反对罕用的外部实现,如事件工夫解决、watermark 生成和闲暇并发检测。这套新的 Source 接口能够极大地升高开发新 Source 的复杂度。
  • Flink SQL 反对变动数据捕捉(Change Data Capture,CDC)。它使 Flink 能够不便地通过像 Debezium 这类工具来翻译和生产数据库的变动日志。Table API 和 SQL 也有助于文件系统连接器反对更多用户场景和格局,从而反对将流式数据从 Pulsar 写入 Hive 等场景。
  • PyFlink 优化多个局部的性能,包含反对向量化的用户自定义函数(Python UDF)。这些改变使 Flink Python 接口能够与罕用的 Python 库(如 Pandas 和 NumPy)进行互相操作,从而使 Flink 更适宜数据处理与机器学习的场景。

在新版本公布后,为了让小伙伴们尽快应用反对 Flink 1.11 的 Pulsar Flink Connector,咱们对新版 Pulsar Flink Connector 进行了降级。

咱们发现这次降级难度很大,问题在于 Flink 新版本对于公开 API 的反对有增减(根底的 FieldsDataType 类型、StreamTableEnvironment 包变更和 execute 办法的变动)、Table 查看 Schema 操作变更为启动时查看、连接器运行时转换为 Catalog,间接使新旧版本不兼容。

通过多方考量,咱们最终决定新增 pulsar-flink-1.11 模块来反对 Flink 1.11。在这里非常感谢 BIGO 团队的陈航、吴展鹏,为社区奉献了 Flink 1.11 的兼容降级技术支持。

Pulsar Schema 蕴含音讯的类型构造信息,它能够很好地和 Flink Table 进行集成。在 Flink 1.9 时,SQL 类型能够绑定物理类型,用于 Pulsar 的 SchemaType。

然而在 Flink 1.11,Table 变更后,SQL 类型只能应用默认的物理类型,Pulsar 的 SchemaType 不反对 Flink 日期、事件的默认物理类型。咱们为 Pulsar Schema 增加了新的原生类型,使 Pulsar Schema 能够和 Flink SQL 类型系统集成起来。

Pulsar Flink Connector 新个性详解

以下是 Pulsar Flink Connector 2.5.0 中增加的一些次要的性能。

pulsar-flink

???? 反对 Flink 1.11 和 flink-sql DDL

Flink 1.11 版本升级的幅度较大,一些公共 API 产生了增删,导致 Flink 1.9、Flink 1.11 的 Pulsar 连接器无奈做到兼容。本次变更使我的项目分为两个模块,来反对不同版本的 Flink。BIGO 的陈航、吴展鹏童鞋为此个性付出了很大的致力。

  • 反对 Flink 1.11 版本
  • 新增 Flink-sql DDL 反对
  • 更新 topic 分区策略,使生产更平均
  • Flink 1.11 兼容 Pulsar schema

无关实现的更多信息,请参见 PR-115:https://github.com/streamnati…。

???? 增加 PulsarDeserializationSchema 接口

形象 PulsarDeserializationSchema 接口,使用户能够自定义解码,取得更多源信息。无关实现的更多信息,请参见 PR-95:https://github.com/streamnati…。
贡献者:@wuzhanpeng

???? Flink Sink 减少 JSON 反对

Flink Sink 实现中,Pulsar Schema 类型反对 JSON。
无关实现的更多信息,请参见 PR-116:https://github.com/streamnati…。
贡献者:@jianyun8023

???? PulsarCatalog 变更为基于 GenericInMemoryCatalog 实现

PulsarCatalog 的实现变更为继承 GenericInMemoryCatalog。
无关实现的更多信息,请参见 PR-91:https://github.com/streamnati…。
贡献者:@sijie

Pulsar Schema

???? 减少 Java 8 工夫、日期类型到 Pulsar Schema 的原生类型

为 Pulsar Schema 减少 Java 8 罕用的 Instant、LocalDate、LocalTime、LocalDateTime 等类型反对。

无关实现的更多信息,请参见 PR-7874:https://github.com/apache/pul…。
贡献者:@jianyun8023

总结

Pulsar Flink Connector 2.5.0 的公布,对于这个疾速倒退的我的项目来说,是一个大的里程碑。在此特别感谢为本次版本公布做出奉献的陈航、吴展鹏、郭斯杰、赵建云。

如果你有好的想法或想成为我的项目贡献者,欢送提交 ISSUE,也能够参考咱们的奉献指南:https://github.com/streamnati…。

相干链接

  • Flink 1.11 新个性 (Flink-China)
  • Pulsar Flink Connector:https://github.com/streamnati…
  • streamnative/pulsar-flink:https://github.com/streamnati…
退出移动版