- 批处理
- 流处理
- 大数据
【免费下载链接】beam
Apache Beam is a unified programming model for Batch and Streaming data processing.
Apache Beam 官方提供 Java、Python、Go 等多语言 SDK,并遵循"统一编程模型、多 Runner 执行"的架构:你只需编写一次 Pipeline,即可在 DirectRunner、Flink、Spark、Dataflow 等不同执行引擎上运行。本文以官方下载文档 website/www/site/content/en/get-started/downloads.md 为主体,系统讲解如何从 Maven Central、PyPI、Go Modules 获取各语言 SDK,如何下载并验证发布源码包,以及 Beam 的 API 稳定性与版本号语义,帮助你为项目选择正确、可信的 Beam 版本。
获取渠道总览:中央仓库是最便捷的方式
对绝大多数用户而言,最省力的做法是直接从中央仓库引入已发布的版本,而不是从源码自行构建。Beam 各语言 SDK 的官方发布渠道如下:
| 语言 SDK | 发布渠道 | 仓库证据 |
|---|---|---|
| Java SDK | Maven Central Repository(org.apache.beamgroupId) | sdks/java/bom/build.gradle 定义 Java 模块的发布与 BOM |
| Python SDK | PyPI(包名apache-beam) | sdks/python/setup.py 中PACKAGE_NAME = 'apache-beam' |
| Go SDK | Go Modules(模块路径github.com/apache/beam/sdks/v2) | sdks/go.mod 第 21 行module github.com/apache/beam/sdks/v2 |
文档使用 Hugo 站点参数{{< param release_latest >}}动态渲染最新版本号,该参数在 website/www/site/config.toml 中定义为release_latest = "2.58.0",即当前最新的正式发布版本。若你正在浏览仓库源码,需注意仓库本身处于开发状态,gradle.properties 中的版本为2.59.0-SNAPSHOT,Python 端 sdks/python/apache_beam/version.py 为2.59.0.dev,二者均不代表已发布的稳定版本。
Java SDK:通过 Maven Central 引入
如果你使用 Maven 构建,并希望以DirectRunner(本地直接执行模式)运行 Java Pipeline,只需在pom.xml中加入如下两个依赖:
<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-sdks-java-core</artifactId> <version>{{ 最新发布版本 }}</version> </dependency> <dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-runners-direct-java</artifactId> <version>{{ 最新发布版本 }}</version> <scope>runtime</scope> </dependency>参数说明:
beam-sdks-java-core:Java SDK 的核心模块,包含 Pipeline、PCollection、PTransform、DoFn 等编程模型核心 API,对应仓库目录 sdks/java/core;beam-runners-direct-java:DirectRunner 的实现模块,以runtime作用域引入即可,因为你的代码只需要依赖核心 API,运行期才需要执行引擎,对应仓库目录 runners/direct-java;version:务必填写正式发布版本号(当前为 2.58.0),不要使用仓库中的 SNAPSHOT 版本用于生产。
为避免为多个 Beam 模块重复维护同一版本号,Apache Beam 还发布了 BOM(Bill of Materials)。仓库中的 sdks/java/bom/build.gradle 负责生成beam-sdks-java-bom,它会把同一版本的多个 Beam 模块统一编排进一个pom.xml,方便你一次性导入多个 SDK 模块(IO connector、扩展、Runner 等)而无需逐个指定版本。
Python SDK:通过 PyPI 安装
Python 用户安装 Beam SDK 同样简单。若使用DirectRunner在本地运行,只需在setup.py(或requirements.txt)中声明:
apache-beam=={{ 最新发布版本 }}apache-beam即 PyPI 上的官方包名,其版本号与 Java SDK 保持一致(例如2.58.0)。SDK 的源码布局对应仓库 sdks/python/apache_beam,包的元信息定义在 sdks/python/setup.py,其中PACKAGE_NAME = 'apache-beam'、PACKAGE_URL = 'https://beam.apache.org'。
安装后即可编写 Python Pipeline 并在本地验证逻辑;如需扩展到分布式 Runner(如 Dataflow、Flink),再按需追加对应的 Runner 依赖与配置。
Go SDK:通过 Go Modules 获取
Go SDK 与 Java/Python 不同,它直接通过 Go Modules 分发。在仓库的模块根文件 sdks/go.mod 中可以看到模块路径为github.com/apache/beam/sdks/v2。从模块子目录执行go get即可引入:
go get github.com/apache/beam/sdks/v2/go/pkg/beam若需要锁定特定版本,可以在模块路径后追加版本号:
go get github.com/apache/beam/sdks/v2@v{{ 最新发布版本 }}/go/pkg/beamGo 的模块机制会自动解析依赖并写入go.mod/go.sum,go.sum同时充当依赖完整性的校验手段。Go SDK 的核心包位于 sdks/go/pkg/beam,其下的beam包即编程模型入口。
附加模块与 Runner:按需扩展依赖
文档明确指出:除了核心 SDK,你通常还需要依赖额外的 SDK 模块(如各类 IO connector、扩展组件)以及用于规模化执行 Pipeline 的 Runner。这也是 Beam"单一编程模型、多 Runner"设计的关键一环:
- IO connectors:仓库 sdks/java/io 下汇集了 Kafka、Pub/Sub、BigQuery、Bigtable、JDBC、Parquet 等大量连接器;Python 侧则位于 sdks/python/apache_beam/io;
- Runner:仓库 runners 目录下包含
direct-java(本地直跑)、flink(Flink 执行)、spark(Spark 执行)、samza、twister2、jet、prism以及google-cloud-dataflow-java(Dataflow 托管服务)等实现。例如 gradle.properties 中flink_versions=1.15,1.16,1.17,1.18表明 Flink Runner 会为多个 Flink 版本分别构建。
在选择 Runner 时,可以从"本地验证用 DirectRunner、集群执行用 Flink/Spark、云上托管用 Dataflow"的思路出发,按需添加依赖,而不是一次性引入全部模块。
下载源码包并验证发布完整性
若你需要阅读或二次开发 Beam 源码,可以下载某个版本的源码压缩包(下载入口在官方 Releases 页面的对应版本条目下)。Apache Beam 强烈要求所有下载者验证文件完整性,这一安全实践同样适用于任何 ASF 项目:
- OpenPGP 签名验证(必须):每个发布文件都附带 OpenPGP 签名(
.asc文件)。你需要用官方维护的 KEYS 文件(内含 Beam Release Manager 的 OpenPGP 公钥)来匹配并验证签名; - SHA-512 校验和:每个发布文件还提供 SHA-512 校验和文件(
.sha512)。下载完成后,应对文件计算校验和,并确认与你从官方获取的校验和一致;更早的版本(2.3.0 及以前)提供的是 SHA-1 与 MD5 校验和。
校验和的作用在于防止下载过程中文件被篡改或损坏:只要本地计算的哈希与官方公布的值一致,即可确认文件与官方发布内容逐字节相同。对生产环境或正式发布流程而言,这一步不应省略。
API 稳定性与版本号语义
Apache Beam 遵循语义化版本的一般规则,版本号形如major.minor.patch,递增规则如下:
- major 版本:不兼容的 API 变更;
- minor 版本:以向后兼容方式新增功能,偶尔包含不兼容的 API 变更;
- patch 版本:向前兼容的 bug 修复。
文档特别强调两点例外:
- 标记为
@Experimental的 API可能在任意时刻发生变化,不保证跨版本兼容。这类 API 通常用于尚在探索中的新特性,例如 SPLITTABLE DoFn 等实验性能力。仓库中 sdks/java/core/src/main/java/org/apache/beam/sdk/options/ExperimentalOptions.java 即演示了实验特性开关的用法:ExperimentalOptions继承自PipelineOptions,通过getExperiments()获取实验列表、hasExperiment(...)/addExperiment(...)判断与添加实验项,其文档注释也提醒"如果运行在托管服务上,请先联系服务所有者再启用任何实验"; - 在首个稳定版本(即版本号处于
0.x.y阶段)之前,任何 API 都可能发生变化。
对使用者的启示:优先选择正式稳定版本,避免依赖@Experimental标注的 API 进入长期生产代码;若必须使用,应将其隔离在易于替换的适配层中。
版本发布历史与 LTS 说明
自 2.0.0(2017-05-17)以来的完整发布历史如下表所示。每个版本均提供官方源码包、校验和(SHA-512,早期版本为 SHA-1/MD5)与 OpenPGP 签名文件,并附有对应的 Release Notes 与博客文章说明(部分版本)。
| 版本 | 发布日期 | 备注 |
|---|---|---|
| 2.58.0 | 2024-08-06 | 当前最新版本 |
| 2.57.0 | 2024-06-26 | |
| 2.56.0 | 2024-05-01 | |
| 2.55.1 | 2024-03-25 | patch 修复版 |
| 2.55.0 | 2024-03-25 | |
| 2.54.0 | 2024-02-14 | |
| 2.53.0 | 2024-01-04 | |
| 2.52.0 | 2023-11-17 | |
| 2.51.0 | 2023-10-11 | |
| 2.50.0 | 2023-08-30 | |
| 2.49.0 | 2023-07-17 | |
| 2.48.0 | 2023-05-31 | |
| 2.47.0 | 2023-05-10 | |
| 2.46.0 | 2023-03-10 | |
| 2.45.0 | 2023-02-15 | |
| 2.44.0 | 2023-01-12 | |
| 2.43.0 | 2022-11-17 | |
| 2.42.0 | 2022-10-17 | |
| 2.41.0 | 2022-08-23 | |
| 2.40.0 | 2022-06-25 | |
| 2.39.0 | 2022-05-25 | |
| 2.38.0 | 2022-04-20 | |
| 2.37.0 | 2022-03-04 | |
| 2.36.0 | 2022-02-07 | |
| 2.35.0 | 2021-12-29 | |
| 2.34.0 | 2021-11-11 | |
| 2.33.0 | 2021-10-07 | |
| 2.32.0 | 2021-08-25 | |
| 2.31.0 | 2021-07-08 | |
| 2.30.0 | 2021-06-09 | |
| 2.29.0 | 2021-04-27 | |
| 2.28.0 | 2021-02-22 | |
| 2.27.0 | 2020-12-22 | |
| 2.26.0 | 2020-12-11 | |
| 2.25.0 | 2020-10-23 | |
| 2.24.0 | 2020-09-18 | |
| 2.23.0 | 2020-07-29 | SHA-512 |
| 2.22.0 | 2020-06-08 | |
| 2.21.0 | 2020-05-27 | |
| 2.20.0 | 2020-04-15 | |
| 2.19.0 | 2020-02-04 | |
| 2.18.0 | 2020-01-23 | |
| 2.17.0 | 2020-01-06 | |
| 2.16.0 | 2019-10-07 | |
| 2.15.0 | 2019-08-22 | |
| 2.14.0 | 2019-08-01 | |
| 2.13.0 | 2019-05-21 | |
| 2.12.0 | 2019-04-25 | |
| 2.11.0 | 2019-02-26 | |
| 2.10.0 | 2019-02-01 | |
| 2.9.0 | 2018-12-13 | |
| 2.8.0 | 2018-10-26 | |
| 2.7.0 LTS | 2018-10-02 | 曾被指定为长期支持版本 |
| 2.6.0 | 2018-08-08 | |
| 2.5.0 | 2018-06-06 | |
| 2.4.0 | 2018-03-20 | SHA-512 |
| 2.3.0 | 2018-01-30 | SHA-1 / MD5 |
| 2.2.0 | 2017-12-02 | SHA-1 / MD5 |
| 2.1.0 | 2017-08-23 | SHA-1 / MD5 |
| 2.0.0 | 2017-05-17 | SHA-1 / MD5 |
校验和说明:2.4.0 及之后的版本提供 SHA-512 校验和;2.3.0 及之前的早期版本提供 SHA-1 与 MD5 校验和。
关于 2.7.0 LTS 的历史说明
2.7.0 曾被 Beam 社区指定为长期支持(Long Term Support,LTS)版本。按当时约定,LTS 版本自标记之日起获得6 个月的官方支持窗口,期间由社区按具体案例决定回移(backport)哪些 issue、何时在该分支上发布 patch 版本。
不过,后续官方更新(2020-04-06)明确指出:由于用户兴趣不足,Beam 社区决定不再维护或发布新的 LTS 版本,并鼓励用户"尽早、经常"地升级到最新发布版本。这一历史沿革说明 Beam 的版本策略以滚动演进为主,选用版本时应以最新稳定版为基准,而不是依赖某个"长期分支"。
版本选择建议
综合以上信息,选择 Beam 版本时可遵循以下思路:
- 优先使用最新稳定版(文档当前为 2.58.0),以获取最新功能与 bug 修复;
- 关注 Release Notes:每个版本都附有变更说明,升级前应重点检查是否存在不兼容的 API 变更(major/minor 版本升级尤其需要留意
@ExperimentalAPI 的变化); - 本地先用 DirectRunner 验证,规模化部署时再按 Runner 类型补充依赖;
- 下载源码包务必校验:核对 OpenPGP 签名与 SHA-512 校验和,确保文件完整可信;
- 若从本仓库自行构建,注意 gradle.properties 中的
2.59.0-SNAPSHOT属于开发版本,仅供实验与贡献使用,不应作为生产依赖。
- 批处理
- 流处理
- 大数据
【免费下载链接】beam
Apache Beam is a unified programming model for Batch and Streaming data processing.
相关推荐
Apache Beam 版本下载与依赖引入完全指南:Maven、PyPI、Go Modules 与发布完整性验证
Apache Beam 版本下载与依赖引入完全指南:Maven、PyPI、Go Modules 与发布完整性验证 Apache Beam 提供面向批处理与流处理
PerfView 下载与部署指南:获取官方版本、校验数字签名与单文件运行
PerfView 下载与部署指南:获取官方版本、校验数字签名与单文件运行 本指南以 PerfView 官方下载文档 documentation/Download
性能剖析可观测性开发工具Apache MXNet 源码发布包下载与完整性校验实战指南(含 1.5.x 及全部历史版本)
Apache MXNet 源码发布包下载与完整性校验实战指南(含 1.5.x 及全部历史版本) Apache MXNet(incubating)为每个正式发布版
深度学习机器学习人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考