Apache Beam 2.52.0

我们很高兴推出 Beam 的新版本 2.52.0。此版本包含改进和新功能。请参见 下载页面,获取此版本的下载链接。

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

重点

  • 以前已弃用的依赖于 Avro 的代码(Beam 版本 2.46.0)已从 Java SDK 的“核心”包中最终删除。请使用 beam-sdks-java-extensions-avro 代替。这将允许您轻松更新用户代码中的 Avro 版本,而不会对 Beam 的“核心”产生潜在的重大更改,因为 Beam Avro 扩展已经支持最新的 Avro 版本,并且应该能够处理此问题。(#25252)。
  • 现在支持将 Java 21 SDK 容器镜像发布到 Apache Beam 的发布流程中。(#28120
    • Direct Runner 和 Dataflow Runner 支持在 Java21 上运行管道(在测试完全设置之前为实验性)。对于其他运行器(Flink、Spark、Samza 等),支持状态取决于运行器项目。

新功能/改进

  • UseDataStreamForBatch 管道选项添加到 Flink 运行器。如果将其设置为 true,则 Flink 运行器将使用 DataStream API 运行批处理作业。默认情况下,该选项设置为 false,因此批处理作业仍使用 DataSet API 执行。
  • 当图的大小超过 10MB 时,DataflowRunner 的 Experiments 选项之一的 upload_graph 不再是 Java SDK 的必需项(PR#28621)。
  • 状态和侧输入缓存已默认启用,大小为 100MB。使用 --max_cache_memory_usage_mb=X 为用户状态 API 和侧输入提供缓存大小。(Python)(#28770)。
  • Beam YAML 稳定版。Beam 管道现在可以使用 YAML 编写,并利用 Beam YAML 框架,该框架包含一组初步的 I/O 和交钥匙转换。有关更多信息,请参阅 YAML 根文件夹和 README

重大变更

  • org.apache.beam.sdk.io.CountingSource.CounterMark 使用自定义 CounterMarkCoder 作为默认编码器,因为所有依赖于 Avro 的类最终都已移至 extensions/avro。如果仍然需要为 CounterMark 使用 AvroCoder,那么作为一种变通方法,应该将“旧”CountingSource 类的副本放置到项目代码中,并直接使用它。(#25252)。
  • FirestoreOptions 中的 host 重命名为 firestoreHost,以避免潜在的命令行参数冲突(Java)(#29201)。
  • 使用 SnappyCoder 的转换在某些运行器上与先前版本的相同转换(Java)不兼容。这包括 PubSubIO 的读取(#28655)。

错误修复

  • 修复了 Java SDK 的 BigtableIO.BigtableSource 中的“所需捆绑大小 0 字节必须大于 0”,当您拥有超过要读取的字节数的核心时(Java)#28793
  • RunInferencewatch_file_pattern 参数在 2.52.0 之前没有效果。要使用 2.52.0 之前 watch_file_pattern 参数的行为,请按照 https://beam.apache.org/documentation/ml/side-input-updates/ 中的文档进行操作,并将 WatchFilePattern PTransform 用作侧输入。(#28948
  • MLTransform 不会输出最小值、最大值和分位数等工件。相反,MLTransform 将添加一项功能,以可读的格式输出这些工件 - #29017。目前,要使用早期 MLTransform 生成的最小值和最大值等工件,请使用 MLTransformread_artifact_location,它将读取之前在不同的 MLTransform 中生成的工件(#29016
  • 修复了内存泄漏问题,该问题影响了一些长时间运行的 Python 管道:#28246

安全修复

已知问题

  • MLTransform 会丢弃输出 PCollection 中的相同元素。对于任何重复元素,只会将单个元素向下游发射。(#29600)。
  • 一些使用 2.52.0-2.54.0 SDK 运行的 Python 管道,如果使用大型物化的侧输入,可能会受到性能下降的影响。要在这些 SDK 版本上恢复先前的行为,请提供 --max_cache_memory_usage_mb=0 管道选项。(Python)(#30360)。
  • 在没有互联网访问权限的环境中启动 Python 管道并使用 --setup_file 管道选项的用户可能会发现管道提交时间有所增加。这已在 2.56.0 中修复(#31070)。
  • 使用 SnappyCoder 的转换在某些运行器上与先前版本的相同转换(Java)不兼容。这包括 PubSubIO 的读取(#28655)。

贡献者列表

根据 git shortlog,以下人员为 2.52.0 版本做出了贡献。感谢所有贡献者!

Ahmed Abualsaud

Ahmet Altay

Aleksandr Dudko

Alexey Romanenko

Anand Inguva

Andrei Gurau

Andrey Devyatkin

BjornPrime

Bruno Volpato

Bulat

Chamikara Jayalath

Damon

Danny McCormick

Devansh Modi

Dominik Dębowczyk

Ferran Fernández Garrido

Hai Joey Tran

Israel Herraiz

Jack McCluskey

Jan Lukavský

JayajP

Jeff Kinard

Jeffrey Kinard

Jiangjie Qin

Jing

Joar Wandborg

Johanna Öjeling

Julien Tournay

Kanishk Karanawat

Kenneth Knowles

Kerry Donny-Clark

Luís Bianchin

Minbo Bae

Pranav Bhandari

Rebecca Szper

Reuven Lax

Ritesh Ghorse

Robert Bradshaw

Robert Burke

RyuSA

Shunping Huang

Steven van Rossum

Svetak Sundhar

Tony Tang

Vitaly Terentyev

Vivek Sumanth

Vlado Djerek

Yi Hu

aku019

brucearctor

caneff

damccorm

ddebowczyk92

dependabot[bot]

dpcollins-google

edman124

gabry.wu

illoise

johnjcasey

jonathan-lemos

kennknowles

liferoad

magicgoody

martin trieu

nancyxu123

pablo rodriguez defino

tvalentyn