用途:在 Google Cloud 托管 Spark(Dataproc 集群与 Serverless)上开发、优化并执行 Spark 代码,支持使用 BigLake Iceberg 读写数据。
主要能力与用法:生成 Spark 代码时默认输出 Python Notebook(.ipynb),仅在明确要求时生成 .py 脚本。必须使用 ManagedSparkSession 连接 Managed Spark Serverless,禁止创建本地 Spark 会话。若用户选择“Local Python”(Spark Connect)内核,需先确认 dataprocSessionConfig,并用 ManagedSparkSession 初始化会话,示例: from google.cloud.managed_spark_connect import ManagedSparkSession spark = ManagedSparkSession.builder.projectId(<PROJECT_ID>).location(<REGION>).getOrCreate()
生成 Notebook 时不得修改本地执行环境:不得创建虚拟环境、安装包或探测 ipykernel/google-cloud-spark-connect。理解输入输出 schema 需使用数据资产发现技能或直接检查,不得猜测列名,发现尝试最多重试 3 次。若表名与请求差异超出轻微拼写错误,必须立即报告缺失表并列出同命名空间可用替代项,询问用户后停止执行,不得自动替换或添加回退逻辑。
验证与执行:用 gcloud storage ls gs://<path-to-dataset> 验证源可访问性;遇 403/404 等存储错误应报告,不得扫描全部桶寻找替代数据集。写入前用 df.printSchema() 校验 DataFrame 与目标 schema 一致。执行前先用 jupyter nbconvert --to script your-notebook.ipynb 转换,再用 python3 -m py_compile your-script.py 编译。生产作业使用 logging 模块而非 print(),不得硬编码凭据或环境变量。
限制与要求:初始化 Spark 会话可能耗时 2-3 分钟,需告知用户。禁止对原始或未聚合 DataFrame 调用 .toPandas() 或 .collect()。Spark 批处理脚本中不得内联 pip install。大表与小维表连接应使用 broadcast()。需遵循 IAM 角色要求(如 roles/dataproc.worker、roles/biglake.admin 等)。故障排查可使用 gcp-spark-troubleshooting 技能。