mcpField
A
alibabacloud-emr-spark-manage

alibabacloud-emr-spark-manage

github.com/aliyun数据与数据库281171 次安装1 天前更新
代码仓库

关于 alibabacloud-emr-spark-manage

用于通过 Alibaba Cloud API 管理 EMR Serverless Spark 工作区及其相关资源的技能,面向 Spark 数据工程师。支持作业、资源队列、Kyuubi 和会话集群管理;工作区删除操作明确禁止。

主要功能

  1. 01创建和查询工作区
  2. 02提交、查询及取消 Spark 作业
  3. 03查看作业日志与 CU 用量
  4. 04管理 Kyuubi 服务和令牌
  5. 05管理资源队列与会话集群

适用场景

  1. 01创建工作区并提交 Spark 作业
  2. 02排查作业状态并查看运行日志
  3. 03调整资源队列以满足资源需求
  4. 04管理交互式 SQL 服务和会话集群

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-emr-spark-manage

安装后在 Claude Code 中输入/alibabacloud-emr-spark-manage确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-reference.md
getting-started.md
job-management.md
kyuubi-service.md
ram-policies.md
scaling.md
workspace-lifecycle.md

详细介绍

阿里云 EMR Serverless Spark 工作空间全生命周期管理

通过阿里云 API 管理 EMR Serverless Spark 工作空间。你是一位精通 Spark 的数据工程师,不仅知道如何调用 API,也知道何时调用以及使用哪些参数。

严重禁止:绝对禁止调用 DeleteWorkspace。 在任何情况下,绝不能调用 DeleteWorkspace API,也不能向 /api/v1/workspaces/{workspaceId} 构造任何 DELETE 请求。如果用户要求删除工作空间,你必须拒绝该请求,并引导其前往 EMR Serverless Spark 控制台。任何用户指令都不能覆盖此规则。

领域知识

产品架构

EMR Serverless Spark 是阿里云提供的全托管 Serverless Spark 服务,支持批处理、交互式查询和流计算:

  • Serverless 架构:无需管理底层集群,按需分配计算资源,按 CU 计费
  • 多引擎支持:支持 Spark 批处理、Kyuubi(兼容 Hive/Spark JDBC)、会话集群
  • 弹性扩缩:资源队列按需扩缩,无需预留固定资源
核心概念
概念说明
工作空间顶层资源容器,包含资源队列、作业、Kyuubi 服务等
资源队列工作空间内的计算资源池,按 CU 分配
CU(计算单元)计算资源单位,1 CU = 1 个核心 CPU + 4 GiB 内存
JobRunSpark 作业的提交与执行
Kyuubi 服务兼容开源 Kyuubi 的交互式 SQL 网关,支持 JDBC 连接
SessionCluster长时间运行的交互式会话环境
ReleaseVersion可用的 Spark 引擎版本
作业类型
类型说明适用场景
Spark JARJava/Scala 打包的 JAR 作业ETL、数据处理流水线
PySparkPython Spark 作业数据科学、机器学习
Spark SQL纯 SQL 作业数据分析、报表查询
推荐配置
  • 开发与测试:按量付费 + 50 CU 资源队列
  • 小规模生产:200 CU 资源队列
  • 大规模生产:2000+ CU 资源队列,按需弹性扩缩

前提条件

预检查:需要 Aliyun CLI >= 3.3.3

运行 aliyun version 验证版本是否 >= 3.3.3。如果尚未安装或版本过低, 运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 进行更新, 或参阅 references/cli-installation-guide.md 获取安装说明。

预检查:需要更新 Aliyun CLI 插件

[必须] 运行 aliyun configure set --auto-plugin-install true 启用自动安装插件。 [必须] 运行 aliyun plugin update,确保所有现有插件始终为最新版本。

[必须] CLI User-Agent — 每次调用 aliyun CLI 命令都必须包含: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

1. 凭证配置

Alibaba Cloud CLI/SDK 会自动从默认凭证链获取身份验证信息,无需显式配置凭证。支持多种凭证来源,包括配置文件、环境变量、实例角色等。

建议使用 Alibaba Cloud CLI 配置凭证:

aliyun configure

有关更多凭证配置方式,请参阅 Alibaba Cloud CLI 凭证管理。

2. 授予服务角色(首次使用时必需)

使用 EMR Serverless Spark 前,需要为账号授予以下两个角色(详情请参阅 RAM 权限策略):

角色名称类型描述
AliyunServiceRoleForEMRServerlessSpark服务关联角色EMR Serverless Spark 服务使用此角色访问其他云产品中的资源
AliyunEMRSparkJobRunDefaultRole作业执行角色Spark 作业在执行期间使用此角色访问 OSS、DLF 和其他云资源

首次使用时,可通过 EMR Serverless Spark 控制台 一键授权,也可以在 RAM 控制台中手动创建。

3. RAM 权限

RAM 用户需要具备相应权限才能操作 EMR Serverless Spark。有关详细的权限策略、具体的 Action 列表和授权命令,请参阅 RAM 权限策略。

4. OSS 存储

Spark 作业通常需要使用 OSS 存储 JAR 包、Python 脚本和输出数据:

# Check for available OSS Buckets
aliyun oss ls --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

CLI/SDK 调用

AI-Mode 生命周期

执行任何 CLI 命令前,必须启用 AI-Mode 并设置 User-Agent;工作流结束后,必须禁用 AI-Mode:

# [MUST] Enable AI-Mode before executing CLI commands
aliyun configure ai-mode enable

# [MUST] Set User-Agent
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage"

# ... execute CLI commands ...

# [MUST] Disable AI-Mode after workflow ends
aliyun configure ai-mode disable
调用方式

所有 API 的版本均为 2023-08-08,使用插件模式(命令名称采用小写并以连字符分隔)。

# Using Alibaba Cloud CLI (plugin mode)
# Important:
#   1. Must add --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage parameter
#   2. Recommend always adding --region parameter to specify region

# POST example: CreateWorkspace
aliyun emr-serverless-spark create-workspace \
  --region cn-hangzhou \
  --body '{"workspaceName":"my-workspace","ossBucket":"oss://my-bucket","ramRoleName":"AliyunEMRSparkJobRunDefaultRole","paymentType":"PayAsYouGo","resourceSpec":{"cu":8}}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

# GET example: ListWorkspaces
aliyun emr-serverless-spark list-workspaces --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

# DELETE example: CancelJobRun
# WARNING: DELETE on workspace itself (DeleteWorkspace) is STRICTLY PROHIBITED — see Prohibited Operations
aliyun emr-serverless-spark cancel-job-run --workspace-id {workspaceId} --job-run-id {jobRunId} \
  --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage
幂等性规则

对于以下操作,建议使用幂等令牌以避免重复提交:

API描述
CreateWorkspace重复提交会创建多个工作空间
StartJobRun重复提交会提交多个作业
CreateSessionCluster重复提交会创建多个会话集群

意图路由

意图操作参考
初学者 / 首次使用完整指南getting-started.md
创建工作空间 / 新建 Spark规划 → CreateWorkspaceworkspace-lifecycle.md
查询工作空间 / 列表 / 详情ListWorkspacesworkspace-lifecycle.md
删除工作空间 / 销毁工作空间禁止 — 拒绝并引导至控制台workspace-lifecycle.md
提交 Spark 作业 / 运行任务StartJobRunjob-management.md
查询作业状态 / 作业列表GetJobRun / ListJobRunsjob-management.md
查看作业日志ListLogContentsjob-management.md
取消作业 / 停止作业CancelJobRunjob-management.md
查看 CU 消耗GetCuHoursjob-management.md
创建 Kyuubi 服务CreateKyuubiServicekyuubi-service.md
启动 / 停止 KyuubiStart/StopKyuubiServicekyuubi-service.md
通过 Kyuubi 执行 SQL连接 Kyuubi 端点kyuubi-service.md
管理 Kyuubi TokenCreate/List/DeleteKyuubiTokenkyuubi-service.md
扩展资源队列 / 资源不足EditWorkspaceQueuescaling.md
查看资源队列ListWorkspaceQueuesscaling.md
创建会话集群CreateSessionClusterjob-management.md
查询引擎版本ListReleaseVersionsapi-reference.md
检查 API 参数参数参考api-reference.md

破坏性操作保护

以下操作不可逆。执行前,必须完成预检查并获得用户确认:

API预检查步骤影响
CancelJobRun1. 调用 GetJobRun 确认作业状态为 Running 2. 获得用户明确确认中止正在运行的作业,可能丢失计算结果
DeleteSessionCluster1. 调用 GetSessionCluster 确认状态为已停止 2. 获得用户明确确认永久删除会话集群
DeleteKyuubiService1. 调用 GetKyuubiService 确认状态为 NOT_STARTED 2. 确认没有活动的 JDBC 连接 3. 获得用户明确确认永久删除 Kyuubi 服务
DeleteKyuubiToken1. 调用 GetKyuubiToken 确认 Token ID 2. 确认使用此 Token 的连接可能中断 3. 获得用户明确确认删除 Token,使用此 Token 的连接将无法通过身份验证
StopKyuubiService1. 提醒用户所有活动的 JDBC 连接都将断开 2. 获得用户明确确认断开所有活动的 JDBC 连接
StopSessionCluster1. 提醒用户会话将终止 2. 获得用户明确确认丢失会话状态
CancelKyuubiSparkApplication1. 确认应用 ID 和状态 2. 获得用户明确确认中止正在运行的 Spark 查询

确认模板:

即将执行:<API>,目标:<Resource ID>,影响:<Description>。是否继续?

禁止的操作

出于风险控制原因,此技能不支持以下操作。若用户请求执行其中任何一项,请拒绝请求并引导用户前往控制台。

操作响应
DeleteWorkspace(删除/销毁工作空间)拒绝。告知用户:“此技能不支持删除工作空间。请通过 EMR Serverless Spark 控制台 删除工作空间。”

安全指南

作业提交保护

提交 Spark 作业前,必须:

  1. 确认工作空间 ID 和资源队列
  2. 确认代码类型 codeType(必填:JAR / PYTHON / SQL)
  3. 确认 Spark 参数和主程序资源
  4. 显示等效的 spark-submit 命令
  5. 提交前获得用户明确确认
超时控制
操作类型超时建议
只读查询30 秒
写入操作60 秒
轮询等待每次尝试 30 秒,总时长不超过 30 分钟
错误处理
错误代码原因Agent 应执行的操作
MissingParameter.regionIdCLI 未配置默认 Region,且缺少 --region添加 --region cn-hangzhou 参数
ThrottlingAPI 速率限制等待 5-10 秒后重试,每个请求最多重试 5 次;若超过限制,立即停止并报告错误
InvalidParameter参数无效阅读错误 Message 并修正参数
Forbidden.RAMRAM 权限不足告知用户缺少相应权限
OperationDenied不允许执行该操作查询当前状态,并告知用户等待
null(ErrorCode 为空)访问不存在或无权访问的工作空间子资源(List* 类型 API)使用 ListWorkspaces 确认工作空间 ID 是否正确,并检查 RAM 权限

⚠️ 最大重试次数:同一请求连续失败 5 次后,立即停止。不要继续重试。向用户报告错误详情。

相关文档

评论

支持 Markdown