Apache Beam 2.5.0

我们很高兴推出 Beam 的新版本 2.5.0。此版本包含多个修复和新功能。

有关更多信息,请查看详细的发布说明。

新功能/改进

Go SDK 支持

Go SDK 已在孵化期和社区努力后正式被项目接受。Go 管道在 Dataflow 运行器上运行。更多详细信息请查看 这里

Parquet 支持

添加了对 Apache Parquet 格式的支持。它使用 Parquet 1.10 版本,该版本得益于 AvroParquerWriter 的 API 更改,允许 FileIO.Sink 实现。

性能/集成测试

  • 添加了新的集成测试 - HCatalogIOIT(Hive)、HBaseIOIT、ParquetIOIT(包括 IO 本身、本地文件系统、HDFS)
  • 多节点(3 个数据节点)HDFS 集群用于在 HDFS 上运行测试。
  • 对性能测试的运行和结果分析进行了多项改进。
  • 将 Kubernetes 集群从 1 个节点扩展到 3 个节点。
  • 在 Spark 流式处理中添加了指标。

内部构建系统:迁移到 Gradle

经过数月的社区努力,Beam 内部构建已从 Maven 迁移到 Gradle。选择新的构建系统是因为它支持依赖驱动的构建、增量构建/测试以及对非 Java 语言的支持。

Nexmark 改进

  • Kafka 支持作为事件和结果的源/接收器。
  • 将一些查询转换为 Beam SQL。

Beam SQL

  • 支持 MAP、ROW、ARRAY 数据类型
  • 支持在数组字段上进行 UNNEST
  • 改进的优化
  • 将 Calcite 升级到 1.16
  • 通过自动转换支持 POJO 上的 SQL
  • 架构已移至核心 Beam
  • UDAF 可以是 CombineFn 的间接子类
  • 许多其他小的错误修复

可移植性

  • 与支持运行器可移植执行相关的通用共享代码。
  • Python SDK 通过可移植性 API 支持辅助输入。

以运行器无关的方式提取指标

指标由运行器推送到可配置的接收器(提供 Http REST 接收器)。它已在 Flink 和 Spark 运行器中启用,Dataflow 的工作正在进行中。

杂项修复

SDK

  • 为 Python SDK 实现了 HDFS 文件系统。
  • Python SDK 添加了对流式执行的辅助输入的支持。

运行器

  • 将 Spark 运行器更新到 Spark 版本 2.3.1
  • 修复了 Directrunner 中将过期固定窗口中的延迟元素窗口化的问题。

IO

  • CassandraIO 获得了基于重叠区域的更好的拆分算法。
  • ElasticsearchIO 支持部分更新。
  • ElasticsearchIO 允许为每个文档传递 id、类型和索引。
  • SolrIO 支持更健壮的写入策略重试。
  • S3 文件系统支持加密(SSE-S3、SSE-C 和 SSE-KMS)。
  • 改进了 JdbcIO 中的连接管理。
  • 在发布到 Kafka 时添加了对元素时间戳的支持。

其他

  • 使用 Java ErrorProne 进行静态分析。

贡献者列表

根据 git shortlog,以下 84 人对 2.5.0 版本做出了贡献。感谢所有贡献者!

Ahmet Altay, Alan Myrvold, Alex Amato, Alex Van Boxel, Alexander Dejanovski, Alexey Romanenko, Aljoscha Krettek, ananvay, Andreas Ehrencrona, Andrew Pilloud, Ankur Goenka, Anton Kedin, arkash, Austin Bennett, Axel Magnuson, Ben Chambers, Ben Sidhom, Bill Neubauer, Boyuan Zhang, Braden Bassingthwaite, Cade Markegard, cclauss, Chamikara Jayalath, Charles Chen, Chuan Yu Foo, Cody Schroeder, Colm O hEigeartaigh, Daniel Oliveira, Dariusz Aniszewski, David Cavazos, Dawid Wysakowicz, Eric Roshan-Eisner, Etienne Chauchot, Eugene Kirpichov, Flavio Fiszman, Geet Kumar, GlennAmmons, Grzegorz Kołakowski, Henning Rohde, Innocent Djiofack, Ismaël Mejía, Jack Hsueh, Jason Kuster, Javier Antonio Gonzalez Trejo, Jean-Baptiste Onofré, Kai Jiang, Kamil Szewczyk, Katarzyna Kucharczyk, Kenneth Jung, Kenneth Knowles, Kevin Peterson, Lukasz Cwik, Łukasz Gajowy, Mairbek Khadikov, Manu Zhang, Maria Garcia Herrero, Marian Dvorsky, Mark Liu, Matthias Feys, Matthias Wessendorf, mingmxu, Nathan Howell, Pablo Estrada, Paul Gerver, Raghu Angadi, rarokni, Reuven Lax, Rezan Achmad, Robbe Sneyders, Robert Bradshaw, Robert Burke, Romain Manni-Bucau, Sam Waggoner, Sam Whittle, Scott Wegner, Stephan Hoyer, Thomas Groh, Thomas Weise, Tim Robertson, Udi Meiri, Valentyn Tymofieiev, XuMingmin, Yifan Zou, Yunqing Zhou