用途:指导 Apache Beam 的 Python SDK 开发,包括环境搭建、测试、构建和运行流水线。
项目结构:sdks/python/ 为 Python SDK 根目录,包含 apache_beam/ 主包(transforms/ 核心转换、io/ 连接器、ml/ 机器学习代码、runners/ 运行器实现与 worker harness)、container/ Docker 配置、test-suites/ 测试配置、scripts/ 工具脚本。配置文件包括 setup.py、pyproject.toml、tox.ini、pytest.ini、ruff.toml、.isort.cfg、pyrefly.toml。
环境搭建:推荐用 pyenv 安装 Python(版本参考 gradle.properties),创建虚拟环境 beam-dev 并激活;在 sdks/python 下执行 pip install -e .[gcp,test] 可编辑安装;用 pip install pre-commit 与 pre-commit install 启用钩子。
测试:单元测试文件名为 *_test.py,可用 pytest -v 指定文件、类或单个测试;集成测试文件名为 *_it_test.py,可在 Direct Runner 或 Dataflow Runner 上运行,后者需先构建 SDK tarball 并传入 --test-pipeline-options。
构建:用 python -m build --sdist 构建源码分发包,或用 ./gradlew :sdks:python:bdistPy311linux 构建 wheel;可用 Gradle 构建并推送 SDK 容器镜像,通过 --sdk_container_image 使用。
运行修改后的代码:安装修改后的 SDK tarball,并在运行流水线时通过 --sdk_location 指定。
常见问题:DoFn 中出现 NameError 时使用 --save_main_session;附加依赖用 --requirements_file 或自定义容器。
代码质量:ruff check 做 lint,pyrefly check 做类型检查,yapf -i 格式化,isort 排序导入。
限制:具体支持的 Python 版本、Gradle 任务细节及运行器配置以官方文档为准,资料未提供完整说明。