SuperAPI AI 工具集

yaml-development

编程与开发

查看项目

更新于 10-15 19:57

技能介绍

用途:指导 Apache Beam 中 YAML SDK 的开发,包括环境搭建、测试与核心概念,适用于处理 Beam YAML 代码。

项目结构:关键文件位于 sdks/python/apache_beam/yaml/,包括 main.py(命令行运行 YAML 管道的入口)、pipeline.schema.yaml(定义 YAML 管道合法结构的 JSON schema)、standard_io.yaml、standard_providers.yaml、yaml_transform.py(核心展开、解析与翻译逻辑)、yaml_provider.py(管理 Python 与 Java 跨语言 Provider)、yaml_io.py、yaml_join.py、yaml_mapping.py、yaml_combine.py、integration_tests.py。

环境搭建:Beam YAML 在 Python SDK 内实现,环境搭建与 Python 开发相同,可参考 python-development 技能,使用 pyenv 并以可编辑模式安装,例如在根目录执行 pip install -e sdks/python[gcp,test]。

运行管道:使用 main.py 运行,命令为 python -m apache_beam.yaml.main --yaml_pipeline_file=/path/to/pipeline.yaml [pipeline_options]。本地示例:python -m apache_beam.yaml.main --yaml_pipeline_file=sdks/python/apache_beam/yaml/examples/simple_filter.yaml --runner=DirectRunner。Dataflow 示例需额外指定 --runner=DataflowRunner、--project、--region、--temp_location。

测试:单元测试用 pytest,如 pytest sdks/python/apache_beam/yaml/yaml_transform_test.py,或指定单个测试。集成测试常通过 testcontainers 启动 Docker 容器(如 MongoDB、Kafka、数据库),可用 pytest sdks/python/apache_beam/yaml/integration_tests.py -k mongodb 按关键字运行。

核心概念:Provider 用于查找 YAML 中请求的转换实现,分内联/Python Provider 与 Java/外部 Provider(通过扩展服务调用 Java 转换)。执行前管道会预处理,解析 schema、匹配 Provider 并展开简写(如 chain 或 source/sink 组合)。

常见问题:跨语言失败时需确保 Docker 运行、扩展服务可用、Java 环境正确(有时需 Java 17/21)。Schema 不匹配时需保证上游字段与下游期望一致,必要时使用显式映射。