☰
Apache Beam 下载与版本获取全指南:Maven、PyPI、Go Modules 与源码校验
2026/10/12 2:18:47 网站建设 项目流程
  • 批处理
  • 流处理
  • 大数据

【免费下载链接】beam

Apache Beam is a unified programming model for Batch and Streaming data processing.

项目地址:https://gitcode.com/gh_mirrors/beam15/beam
点击查看免费下载

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 SDKMaven Central Repository(org.apache.beamgroupId)sdks/java/bom/build.gradle 定义 Java 模块的发布与 BOM
Python SDKPyPI(包名apache-beam)sdks/python/setup.py 中PACKAGE_NAME = 'apache-beam'
Go SDKGo 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/beam

Go 的模块机制会自动解析依赖并写入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 项目:

  1. OpenPGP 签名验证(必须):每个发布文件都附带 OpenPGP 签名(.asc文件)。你需要用官方维护的 KEYS 文件(内含 Beam Release Manager 的 OpenPGP 公钥)来匹配并验证签名;
  2. SHA-512 校验和:每个发布文件还提供 SHA-512 校验和文件(.sha512)。下载完成后,应对文件计算校验和,并确认与你从官方获取的校验和一致;更早的版本(2.3.0 及以前)提供的是 SHA-1 与 MD5 校验和。

校验和的作用在于防止下载过程中文件被篡改或损坏:只要本地计算的哈希与官方公布的值一致,即可确认文件与官方发布内容逐字节相同。对生产环境或正式发布流程而言,这一步不应省略。

API 稳定性与版本号语义

Apache Beam 遵循语义化版本的一般规则,版本号形如major.minor.patch,递增规则如下:

  • major 版本:不兼容的 API 变更;
  • minor 版本:以向后兼容方式新增功能,偶尔包含不兼容的 API 变更;
  • patch 版本:向前兼容的 bug 修复。

文档特别强调两点例外:

  1. 标记为@Experimental的 API可能在任意时刻发生变化,不保证跨版本兼容。这类 API 通常用于尚在探索中的新特性,例如 SPLITTABLE DoFn 等实验性能力。仓库中 sdks/java/core/src/main/java/org/apache/beam/sdk/options/ExperimentalOptions.java 即演示了实验特性开关的用法:ExperimentalOptions继承自PipelineOptions,通过getExperiments()获取实验列表、hasExperiment(...)/addExperiment(...)判断与添加实验项,其文档注释也提醒"如果运行在托管服务上,请先联系服务所有者再启用任何实验";
  2. 在首个稳定版本(即版本号处于0.x.y阶段)之前,任何 API 都可能发生变化。

对使用者的启示:优先选择正式稳定版本,避免依赖@Experimental标注的 API 进入长期生产代码;若必须使用,应将其隔离在易于替换的适配层中。

版本发布历史与 LTS 说明

自 2.0.0(2017-05-17)以来的完整发布历史如下表所示。每个版本均提供官方源码包、校验和(SHA-512,早期版本为 SHA-1/MD5)与 OpenPGP 签名文件,并附有对应的 Release Notes 与博客文章说明(部分版本)。

版本发布日期备注
2.58.02024-08-06当前最新版本
2.57.02024-06-26
2.56.02024-05-01
2.55.12024-03-25patch 修复版
2.55.02024-03-25
2.54.02024-02-14
2.53.02024-01-04
2.52.02023-11-17
2.51.02023-10-11
2.50.02023-08-30
2.49.02023-07-17
2.48.02023-05-31
2.47.02023-05-10
2.46.02023-03-10
2.45.02023-02-15
2.44.02023-01-12
2.43.02022-11-17
2.42.02022-10-17
2.41.02022-08-23
2.40.02022-06-25
2.39.02022-05-25
2.38.02022-04-20
2.37.02022-03-04
2.36.02022-02-07
2.35.02021-12-29
2.34.02021-11-11
2.33.02021-10-07
2.32.02021-08-25
2.31.02021-07-08
2.30.02021-06-09
2.29.02021-04-27
2.28.02021-02-22
2.27.02020-12-22
2.26.02020-12-11
2.25.02020-10-23
2.24.02020-09-18
2.23.02020-07-29SHA-512
2.22.02020-06-08
2.21.02020-05-27
2.20.02020-04-15
2.19.02020-02-04
2.18.02020-01-23
2.17.02020-01-06
2.16.02019-10-07
2.15.02019-08-22
2.14.02019-08-01
2.13.02019-05-21
2.12.02019-04-25
2.11.02019-02-26
2.10.02019-02-01
2.9.02018-12-13
2.8.02018-10-26
2.7.0 LTS2018-10-02曾被指定为长期支持版本
2.6.02018-08-08
2.5.02018-06-06
2.4.02018-03-20SHA-512
2.3.02018-01-30SHA-1 / MD5
2.2.02017-12-02SHA-1 / MD5
2.1.02017-08-23SHA-1 / MD5
2.0.02017-05-17SHA-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 版本时可遵循以下思路:

  1. 优先使用最新稳定版(文档当前为 2.58.0),以获取最新功能与 bug 修复;
  2. 关注 Release Notes:每个版本都附有变更说明,升级前应重点检查是否存在不兼容的 API 变更(major/minor 版本升级尤其需要留意@ExperimentalAPI 的变化);
  3. 本地先用 DirectRunner 验证,规模化部署时再按 Runner 类型补充依赖;
  4. 下载源码包务必校验:核对 OpenPGP 签名与 SHA-512 校验和,确保文件完整可信;
  5. 若从本仓库自行构建,注意 gradle.properties 中的2.59.0-SNAPSHOT属于开发版本,仅供实验与贡献使用,不应作为生产依赖。
  • 批处理
  • 流处理
  • 大数据

【免费下载链接】beam

Apache Beam is a unified programming model for Batch and Streaming data processing.

项目地址:https://gitcode.com/gh_mirrors/beam15/beam
点击查看免费下载

相关推荐

上一篇:claude-desktop-debian 工程治理指南:AGENTS.md 中的补丁零改动契约、代码规范与构建分发架构
下一篇:goal_decompose_reassemble:DrAttack 式"目标拆解—重组"越狱算子的原理与实践

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询