博客与版本
2023/08/30
Apache Beam 2.50.0
我们很高兴推出 Beam 的新版本 2.50.0。此版本包含改进和新功能。请参阅 下载页面 以获取此版本的更多信息。
有关 2.50.0 中更改的更多信息,请查看 详细的发布说明.
亮点
- Spark 3.2.2 作为 Spark 运行器的默认版本 (#23804).
- Go SDK 具有一个新的默认本地运行器,称为 Prism (#24789).
- 所有 Beam 发布的容器镜像现在都是 多体系结构镜像,支持 x86 和 ARM CPU 架构。
I/Os
- Java KafkaIO 现在支持通过 topicPattern 获取主题 (#26948)
- 支持从 Cosmos DB Core SQL API 读取 (#23604)
- 将 HBaseIO 的 HBase 升级到 2.5.5。(Java)(#27711)
- 添加了对 GoogleAdsIO 源的支持(Java)(#27681).
新功能/改进
- Go SDK 现在需要 Go 1.20 才能构建。(#27558)
- Go SDK 具有一个新的默认本地运行器,称为 Prism。(#24789)。
- Prism 是一个可移植运行器,独立执行每个转换,确保编码器。
- 在这一点上,它在功能上取代了 Go 直接运行器。Go 直接运行器现在已弃用。
- 请参阅 https://github.com/apache/beam/blob/master/sdks/go/pkg/beam/runners/prism/README.md 以了解 Prism 的目标和功能。
- 为 Python SDK 添加了用于 RunInference 的 Hugging Face 模型处理程序。(#26632)
- 为 Python SDK 添加了用于 RunInference 的 Hugging Face 管道支持。(#27399)
- 用于 RunInference 的 Vertex AI 模型处理程序现在支持私有端点 (#27696)
- 添加了 MLTransform 转换,支持常见的 ML 预处理/后处理操作 (#26795)
- 将 Java SDK 的 Kryo 扩展升级到 Kryo 5.5.0。这带来了错误修复、性能改进以及 Java 14 记录的序列化。(#27635)
- 所有 Beam 发布的容器镜像现在都是 多体系结构镜像,支持 x86 和 ARM CPU 架构。(#27674)。多体系结构容器镜像包括
- 所有版本的 Go、Python、Java 和 Typescript SDK 容器。
- 所有版本的 Flink 作业服务器容器。
- Java 和 Python 扩展服务容器。
- 转换服务控制器容器。
- Spark3 作业服务器容器。
- 添加了对 AWS SQS 的批量写入支持,以提高吞吐量(Java,AWS 2)。(#21429)
重大变更
- Python SDK:从 Dataflow 中删除了对传统运行器的支持,所有管道都必须使用运行器 v2。
- Python SDK:Dataflow 运行器将不再在管道提交时将 Beam SDK 从 PyPI 暂存到
--staging_location
。不基于 Beam 默认镜像的自定义容器镜像必须包含 Apache Beam 安装。(#26996)
弃用
- Go 直接运行器现已弃用。它仍然可用,以减少迁移变更。
- 可以通过覆盖 TestMain 将测试设置回直接运行器:
func TestMain(m *testing.M) { ptest.MainWithDefault(m, "direct") }
- 建议使用 Prism 解决测试中发现的问题,因为这些问题也可能发生在任何可移植运行器上。
- 在管道 DoFns 中使用通用 register 包,以确保管道在可移植运行器(如 prism)上正常运行。
- 不要依赖闭包或使用包全局变量来配置 DoFn。它们在可移植运行器上不起作用。
- 可以通过覆盖 TestMain 将测试设置回直接运行器:
错误修复
- 修复了 Python SDK 中的 DirectRunner 错误,该错误导致 GroupByKey 在管道选项
direct_num_workers!=1
时获取空 PCollection 并失败。(#27373) - 修复了 BigQuery I/O 错误,该错误在估计使用行级安全的查询大小时出现 (#27474)
- Beam Python 容器依赖于 Debian/aom 的版本,该版本存在多个安全漏洞:CVE-2021-30474、CVE-2021-30475、CVE-2021-30473、CVE-2020-36133、CVE-2020-36131、CVE-2020-36130 和 CVE-2020-36135.
已知问题
- 长时间运行的 Python 管道可能会遇到内存泄漏:#28246.
- 使用 BigQuery I/O 或
orjson
依赖项的 Python 管道可能会遇到段错误或卡住:#28318. - Python SDK 的跨语言 Bigtable 接收器错误地处理没有显式设置时间戳的记录:#28632。为了避免此问题,请在写入 Bigtable 之前为所有记录设置显式时间戳。
贡献者列表
根据 git shortlog,以下人员为 2.50.0 版本做出了贡献。感谢所有贡献者!
Abacn
acejune
AdalbertMemSQL
ahmedabu98
Ahmed Abualsaud
al97
Aleksandr Dudko
Alexey Romanenko
Anand Inguva
Andrey Devyatkin
Anton Shalkovich
ArjunGHUB
Bjorn Pedersen
BjornPrime
Brett Morgan
Bruno Volpato
Buqian Zheng
Burke Davison
Byron Ellis
bzablocki
case-k
Celeste Zeng
Chamikara Jayalath
Clay Johnson
Connor Brett
Damon
Damon Douglas
Dan Hansen
Danny McCormick
Darkhan Nausharipov
Dip Patel
Dmytro Sadovnychyi
Florent Biville
Gabriel Lacroix
Hai Joey Tran
Hong Liang Teoh
Jack McCluskey
James Fricker
Jeff Kinard
Jeff Zhang
Jing
johnjcasey
jon esperanza
Josef Šimánek
Kenneth Knowles
Laksh
Liam Miller-Cushon
liferoad
magicgoody
Mahmud Ridwan
Manav Garg
Marco Vela
martin trieu
Mattie Fu
Michel Davit
Moritz Mack
mosche
Peter Sobot
Pranav Bhandari
Reeba Qureshi
Reuven Lax
Ritesh Ghorse
Robert Bradshaw
Robert Burke
RyuSA
Saba Sathya
Sam Whittle
Steven Niemitz
Steven van Rossum
Svetak Sundhar
Tony Tang
Valentyn Tymofieiev
Vitaly Terentyev
Vlado Djerek
Yichi Zhang
Yi Hu
Zechen Jiang