用途
该技能用于将 Google Cloud Managed Service for Apache Spark(原 Dataproc)上的 Spark 作业从源版本升级到目标版本,在保持兼容性和功能的前提下完成迁移。当前明确支持的范围是集群上的 PySpark 作业。
主要能力
- 分析作业环境:获取作业详情(主脚本、依赖、配置、GPU/RAPIDS 使用情况、数据汇出路径)。
- 检索源码:从 GCS 下载脚本,或使用工作区 Git 仓库(在新分支上操作)。
- 版本对比:通过脚本和官方文档解析组件版本。
- 兼容性扫描:检查代码和依赖(requirements.txt、setup.py)中的兼容性问题,包含 GPU/RAPIDS 兼容性,并识别输出汇以规划测试输出重定向。
- 升级代码:应用兼容性改动,替换废弃 API、更新依赖、应用旧版配置标志,但不得修改业务逻辑、查询语义或生产数据路径。
- 验证语法:运行 python3 -m py_compile。
- 测试作业:创建匹配原作业需求、优先采用成本效益高的最小硬件的集群配置进行功能验证,将测试输出重定向到临时 GCS 位置。
- 调试:作业失败时分析日志(ClassNotFound、AnalysisException、序列化、GPU 驱动/RAPIDS 错误等),必要时搜索 Spark/Hadoop Jira 或网络,应用修复并最多重试 3 次。
- 交付:恢复原始生产路径,生成 migration_report.md(含版本、变更、测试日志、推荐生产配置、部署说明),并将最终产物上传到目标 GCS 桶。
使用方式
- 所有 GCP 操作需要有效认证;遇到认证或权限错误时,参考 @skill:google-cloud-auth-verification 解决。
- 技能中的辅助脚本遵循 PEP 723 规范内联维护依赖,使用 uv 执行(如 uv run scripts/<script_name>.py --help),运行 --help 可查看接口而非阅读源码。
- 输入分为两类:分析输入(Dataproc 作业 ID,或源码位置与源镜像版本的组合,外加目标镜像版本,如 2.2-debian12、3.0-debian12)和执行输入(项目 ID、区域、子网、自定义镜像 URI、临时暂存位置、目标 GCS 桶)。执行输入可延后,但必须在验证步骤前收集并验证。
- 采用严格零默认策略:不查询、推断或回退到默认 gcloud 配置、环境变量或默认网络设置。
- 输入按 references/cluster_input_validations.md 进行校验;缺失分析输入时向用户询问,可在等待期间开始静态代码分析。
- 临时文件必须以 _temp 作为后缀。
- 建议模型温度不高于 0.3 以保持确定性。
- 每个阶段完成后(分析报告、测试作业运行)需请求用户批准,除非 auto_approve 为真。
适用场景
- 将 PySpark 集群作业从旧 Dataproc 镜像版本升级到新版本(如 2.2-debian12 到 3.0-debian12)。
- 需要在不改变业务逻辑和生产数据路径的前提下解决版本兼容、废弃 API、依赖冲突和 GPU/RAPIDS 兼容问题。
- 需要在目标版本上通过隔离输出的测试作业验证迁移正确性。
限制
- 当前仅支持集群上的 PySpark 作业,其他类型暂未提供说明。
- 测试作业绝不能写入生产数据目标或覆盖生产数据集;需用户提供临时测试输出 GCS 位置。
- 若为测试调整代码,必须隔离到临时测试脚本或临时覆盖,并在交付前还原原始生产路径。
- 需要 roles/dataproc.worker(创建集群和运行作业)和 roles/storage.objectUser(读写 GCS)权限。
- 测试作业运行会产生费用,需获得批准。
- 验证阶段失败最多重试 3 次。
- 价格、具体平台可用性等细节暂未提供。