博客 & 发布
2023/11/17
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。
- RunInference 的
watch_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
生成的最小值和最大值等工件,请使用MLTransform
的read_artifact_location
,它将读取之前在不同的MLTransform
中生成的工件(#29016)- 修复了内存泄漏问题,该问题影响了一些长时间运行的 Python 管道:#28246。
安全修复
- 修复了 CVE-2023-39325(Java/Python/Go)(#29118)。
- 缓解了 CVE-2023-47248(Python)#29392。
已知问题
- 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