
Byted Emr Skills
- 2 installs
- 408 repo stars
- Updated August 3, 2026
- volcengine/agentkit-samples
Manages Volcengine EMR big-data clusters, Serverless queues, compute groups, Spark/Presto/Ray jobs, logs, monitoring, and agent-based job diagnosis.
About
Manages Volcengine EMR (E-MapReduce) Hadoop-ecosystem clusters, Serverless queues, compute groups, job templates/instances, logs, and monitoring. A developer uses it to run and diagnose SparkSQL, PrestoSQL, Ray, PySpark, and SparkJar jobs on EMR.
- Covers EMR on ECS/VKE clusters and Serverless queues, compute groups, and job instances
- Includes EMR Agent smart diagnosis and knowledge Q&A for failed jobs
Byted Emr Skills by the numbers
- 2 all-time installs (skills.sh)
- Ranked #916 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/volcengine/agentkit-samples --skill byted-emr-skillsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 408 |
| Last updated | August 3, 2026 |
| Repository | volcengine/agentkit-samples ↗ |
What it does
Manages Volcengine EMR big-data clusters, Serverless queues, compute groups, Spark/Presto/Ray jobs, logs, monitoring, and agent-based job diagnosis.
Files
EMR Skills
- 何时使用(触发短语)
- 当用户提出以下任何类似需求时,立即调用该技能:
“查询EMR集群的服务列表”
“重启Spark服务”
“获取 EMR 作业日志”
“查看EMR serverless队列列表”
“查看EMR serverless队列详情”
“使用 EMR Serverless 运行任务”
“在 EMR 上提交一个 Spark 作业”
“帮我诊断一下失败的 Spark 作业”
“分析一下EMR作业失败的原因”- 任何涉及 EMR Serverless 作业/队列/计算组/监控/日志/诊断 的操作询问
功能清单
- EMR Serverless
- 队列:开通公共队列、队列列表查询、队列详情查询、队列下计算组列表查询
- 队列权限:查询队列授权主体、为用户授予/修改队列权限
- 计算组:创建/修改/启动/停止/删除、查询可选规格与镜像、外部元数据连通性测试
- 作业模板:创建/更新/查询详情/列表查询/运行
- 作业实例:提交(SparkSQL/PrestoSQL/SparkJar/PySpark/RayJob)、查询状态与详情、取消、获取 tracking url、获取提交日志与执行日志、列表查询、重跑、结果分批拉取
- 监控:队列/计算组/作业监控数据查询,按指标清单逐项拉取并汇总报告
- EMR Agent
- 交互式诊断与知识问答
- 会话与报告管理
- EMR on ECS
- 集群:查看集群详情、集群列表、更新集群属性
- 节点组:列出节点组、更新节点组属性、节点列表、扩容节点组磁盘、更新节点组ECS规格
- 服务:列出应用、组件列表、组件实例列表、执行应用操作
- 服务配置:配置文件列表、配置文件详情、配置项列表、配置项修改历史列表、修改配置项
- 操作审计:操作列表查询
- 用户:创建集群用户、修改已创建用户信息、获取集群用户列表、获取用户详情、更新集群用户密码
- 用户组:获取集群用户组列表、集群用户组详情、创建集群用户组、更新集群用户组
- EMR on VKE
- 集群:查看集群列表、集群详情
- 服务(应用):查看服务列表、服务组件实例、重启服务或组件实例、查看服务配置参数、修改服务配置参数
- 操作日志:查看操作日志列表、操作日志详情
Initial Setup
环境变量配置
方式一:使用ARK_SKILL_API环境变量(推荐)
如果已配置以下环境变量,则无需配置火山引擎API凭证:
export ARK_SKILL_API_BASE="your-api-base-url"
export ARK_SKILL_API_KEY="your-api-key"方式二:使用火山引擎API凭证
如果未配置ARK_SKILL_API环境变量,且需要使用serverless sdk能力或出现sdk报错,则需要配置火山引擎API凭证:
export VOLCENGINE_AK="your-access-key"
export VOLCENGINE_SK="your-secret-key"
export VOLCENGINE_REGION="cn-beijing"- 安装emr serverless sdk,调用scripts/bin/install_serverless_sdk.sh安装
How to manage EMR
1. EMR on Serverless管理
- 针对全托管的 Serverless 形态,主要面向作业提交和资源队列管理。
- OpenAPI 推荐使用命令行工具:
python ./scripts/on_serverless/emr_serverless_cli.py --action <Action> --method <GET|POST> --query '<json>' --body '<json>' - Region 默认从环境变量
VOLCENGINE_REGION读取(默认 cn-beijing) - Service/Version 会根据 Action 自动推断(需要时也可显式传
--service/--version) - 自定义 endpoint(如 LAS)可额外传
--endpoint las.cn-beijing.volcengineapi.com - 作业提交推荐使用命令行工具:
python ./scripts/on_serverless/emr_serverless_submit_cli.py <sql|jar|pyspark|ray> ...
如何管理资源队列
- 支持的功能列表
- 队列列表:查看所有资源队列及其配置(如最大资源、当前使用量), 必须使用OpenAPI
ListTagQueue查询队列列表。 - 队列详情:获取队列的详细信息,包括绑定的网络、存储等, 必须使用OpenAPI
GetQueue查询队列详情。 - 队列监控:通过云监控接口获取队列近一天的资源使用率、作业数、失败作业数量等(需要云监控权限)。
- 创建队列:一键创建公共队列, 必须使用OpenAPI
CreateQueueSilently或CreateOrderInOneStep创建队列。 - 队列计算组列表:获取指定队列下的计算组(Queue Component)列表与详情,必须使用OpenAPI
ListQueueComponent查询队列计算组列表。 - 所有的队列功能操作详情,请严格按照
references/emr_serverless/queue/emr_serverless_queue_guide.md中的说明进行操作。
如何管理队列权限
- 支持的功能列表
- 获取队列权限列表:根据指定的队列,获取具有其权限的用户/用户组列表, 必须使用OpenAPI
ListAuthorizedPrincipalsForQueue查询队列权限列表。 - 模糊搜索队列权限:根据用户名模糊查询用户列表,同时判断用户是否已经具有指定队列的权限,必须使用OpenAPI
ListIAMUsersWithQueueRole查询队列权限列表。 - 添加用户权限:为用户授予指定数据对象的权限,必须使用OpenAPI
GrantQueuePrivilege添加用户权限。 - 修改用户的队列权限:修改用户对指定队列的权限, 必须使用OpenAPI
AlterQueuePrivilege修改用户权限。 - 所有的功能操作详情,请严格按照
references/emr_serverless/privilege/emr_serverless_privilege_guide.md中的说明进行操作。
如何管理作业模板
- 必须注意作业模板和作业实例的区别:
- 作业模板:定义作业的通用配置,包括代码路径、参数、环境变量等。
- 作业实例:基于作业模板创建的具体运行实例,包含作业 ID、运行参数、状态等。
- 支持的作业模板功能列表
- 创建作业模板:定义作业模板(包含代码路径、参数、环境配置等),必须使用OpenAPI
CreateJobDefinition创建作业模板。 - 执行或运行作业模板:基于已有作业模板触发一次运行,必须使用OpenAPI
RunJobDefinition执行作业模板。 - 修改作业模板:修改作业模板(如执行资源、代码路径、入口命令等),但不影响已提交的作业实例,必须使用OpenAPI
AlterJobDefinition修改作业模板。 - 查询作业模板详情:获取作业模板的详细配置信息,必须使用OpenAPI
GetJobDefinition查询作业模板详情。 - 查询作业模板列表:获取所有已创建的作业模板列表,必须使用OpenAPI
ListJobDefinitions查询作业模板列表。 - 所有作业模板(即作业定义)的详细操作指南,请严格按照
references/emr_serverless/job/emr_serverless_job_guide.md中的说明进行操作。
如何管理作业实例
- 作业实例功能列表
- 提交作业:支持 SparkSQL、PrestoSQL、SparkJar、PySpark、RayJob 等类型;SparkJar/PySpark/RayJob 支持作业执行脚本使用本地路径(由 SDK 自动上传至 TOS,细节见作业实例指南)。
- 查询作业实例:推荐使用 OpenAPI
QueryGetJobV2获取状态与详情。 - 终止作业实例:OpenAPI
QueryCancelQueryV2。 - 获取作业日志:OpenAPI
FetchDriverLog/QueryFetchSubmitLog(支持关键字过滤)。 - 分批获取结果数据:对于 SQL 类作业,可通过OpenAPI
QueryFetchResultsByBatch分批获取结果 - 获取 Tracking url:OpenAPI
QueryGetTrackingURL。 - 作业实例列表:OpenAPI
ListJobInstances。 - 所有作业实例的详细操作指南,请严格按照
references/emr_serverless/job_instance/emr_serverless_job_instance_guide.md中的说明进行操作。
如何管理计算组(Serverless 资源单元)
- 创建/修改计算组配置。
- 查询计算组监控数据,支持监控总结和巡检。
如何查询操作日志
- 功能列表
- 全局操作日志页面以及队列、计算组的操作列表查询
- 所有的操作日志查询,请严格按照
references/emr_serverless/operation_audit/emr_serverless_operation_audit_guide.md中的说明进行操作。
如何查询队列、计算组、作业监控数据
- 功能列表
- 队列计算组作业监控数据查询:获取队列、计算组、作业的监控数据,包括 CPU 利用率、内存利用率、作业数、失败作业数量等,必须使用OpenAPI
GetMetricData查询队列、计算组、作业监控数据。 - 所有的队列计算组作业监控数据查询操作,请严格按照
references/emr_serverless/monitor/emr_serverless_monitor_guide.md中的说明进行操作。
2. EMR Agent(EMR AI 助手)
如何进行交互式问题诊断和知识助手
- 功能列表
- 适用于所有 EMR 形态,提供交互式问题诊断和知识问答。
- 计费说明
- EMR控制台上EMR Agent目前是需要加白的,API调用暂不需要加白,可直接使用
- 目前有有一定免费额度,后续根据使用情况计费。
如何管理诊断会话和报告管理
- 功能列表
- 报告列表:获取历史诊断报告列表。
- 查看报告详情:获取已有报告内容。
- 会话列表:获取分析诊断和问答历史会话列表。
- 查看会话详情:获取会话的详细信息,包括问题描述、回答内容、会话状态等。
- 所有分析诊断会话和报告操作,请严格按照
references/emr_agent/emr_agent_guide.md中的说明进行操作。
3. EMR on ECS 集群管理
- 支持对基于 ECS 的传统 Hadoop 集群进行全生命周期管理。
如何管理集群
- 功能列表
- 查看集群详情:获取集群基础信息、状态、计费类型、访问地址等,必须使用OpenAPI
GetCluster查询集群详情。 - 集群列表:按条件筛选、分页查询,必须使用OpenAPI
ListClusters查询集群列表。 - 更新集群属性:修改集群名称、描述等,必须使用OpenAPI
UpdateClusterAttribute更新集群属性。 - 所有集群管理操作详情,请严格按照
references/emr_on_ecs/cluster/emr_on_ecs_cluster_guide.md中的说明进行操作。
节点组管理
- 功能列表
- 列出节点组:查看集群内的节点组(如 Master、Core、Task)及其配置,必须使用OpenAPI
ListNodeGroups列出节点组列表。 - 更新节点组属性:修改节点组名称、实例规格(支持升级)、磁盘扩容,必须使用OpenAPI
UpdateNodeGroupAttribute更新节点组属性。 - 节点列表:查看节点组内所有 ECS 实例的详细信息,必须使用OpenAPI
ListNodes查询节点组内所有节点实例的详细信息。 - 扩容节点组磁盘:扩容指定节点组的磁盘容量,必须使用OpenAPI
ResizeNodeGroupDisk扩容节点组磁盘。 - 更新节点组ECS规格:修改指定节点组的ECS实例规格,必须使用OpenAPI
UpdateNodeGroupEcsSpec更新节点组ECS规格。 - 所有节点组管理操作详情,请严格按照
references/emr_on_ecs/node_group/emr_on_ecs_node_group_guide.md中的说明进行操作。
应用管理
- 功能列表
- 列出应用:查看集群已安装的大数据组件,必须使用OpenAPI
ListApplications列出应用列表。 - 组件列表:查看每个服务的角色分布,必须使用OpenAPI
ListComponents列出组件列表。 - 组件实例列表:查看每个组件的实例列表,必须使用OpenAPI
ListComponentInstances列出组件实例的实例列表。 - 执行应用操作:对组件进行启动、停止、重启、滚动重启等操作,必须使用OpenAPI
RunApplicationAction执行应用操作。 - 所有应用管理操作详情,请严格按照
references/emr_on_ecs/application/emr_on_ecs_application_guide.md中的说明进行操作。
应用配置管理
- 功能列表
- 配置文件列表:查看集群中指定应用的配置文件列表,必须使用OpenAPI
ListApplicationConfigFiles列出应用配置文件列表。 - 配置文件详情:查看集群中指定应用的配置文件内容、修改时间等信息,必须使用OpenAPI
GetApplicationConfigFile查询应用配置文件详情。 - 配置项列表:查看集群中指定应用的配置项列表,包括配置项名称、当前值、默认值等信息,必须使用OpenAPI
ListApplicationConfigs列出应用配置项列表。 - 配置项修改历史列表:查看集群中指定应用的配置项修改历史列表,必须使用OpenAPI
ListApplicationConfigHistories列出应用配置项修改历史列表。 - 修改配置项:修改集群中指定应用的配置项值,必须使用OpenAPI
UpdateApplicationConfig更新应用配置项。 - 所有应用配置管理操作详情,请严格按照
references/emr_on_ecs/application_config/emr_on_ecs_application_config_guide.md中的说明进行操作。
操作审计管理
- 操作列表查询:查看集群中所有操作日志、支持分页查询,必须使用OpenAPI
ListOperations列出操作列表。 - 所有操作审计管理操作详情,请严格按照
references/emr_on_ecs/operation/emr_on_ecs_operation_guide.md中的说明进行操作。
用户管理
- 功能列表
- 创建集群用户:为集群新增用户,需指定用户名、密码等信息,必须使用OpenAPI
CreateClusterUser创建集群用户。 - 修改已创建用户信息:修改指定集群中已存在用户的用户组或描述信息,必须使用OpenAPI
UpdateClusterUser更新集群用户信息。 - 获取集群用户列表:查询指定集群的用户信息列表,必须使用OpenAPI
ListClusterUsers列出集群用户列表。 - 获取用户详情: 查询指定集群的详细用户信息,必须使用OpenAPI
GetClusterUsers查询集群用户详情。 - 更新集群用户密码:修改指定集群中已存在用户的登录密码,必须使用OpenAPI
UpdateClusterUserPassword更新集群用户密码。 - 所有用户管理操作详情,请严格按照
references/emr_on_ecs/user/emr_on_ecs_user_guide.md中的说明进行操作。
用户组管理
- 功能列表
- 获取集群用户组列表: 查询指定集群的用户组信息列表,必须使用OpenAPI
ListClusterUserGroups列出集群用户组列表。 - 集群用户组详情: 查询指定集群的详细用户组信息,必须使用OpenAPI
GetClusterUserGroups查询集群用户组详情。 - 创建集群用户组:为指定集群创建新的用户组,必须使用OpenAPI
CreateClusterUserGroup创建集群用户组。 - 更新集群用户组:修改指定集群中已存在用户组的描述或成员信息,必须使用OpenAPI
UpdateClusterUserGroup更新集群用户组。 - 所有用户组管理操作详情,请严格按照
references/emr_on_ecs/user_group/emr_on_ecs_user_group_guide.md中的说明进行操作。
EMR on VKE 集群管理
- 所有集群管理操作详情,请严格按照
references/emr_on_vke/emr_on_vke_guide.md中的说明进行操作。
Available Scripts
scripts/on_serverless/emr_serverless_manager.py:统一的 EMR Serverless OpenAPI 调用入口(manage_emr_serverless),用于队列/作业实例/计算组等运维类接口调用。scripts/config/config.py: 封装EMR所用到的配置、SDK Client构造等。scripts/emr_agent/expert.py:与 EMR Agent 交互,实现智能诊断和知识问答。scripts/emr_agent/emr_agent_manager.py:获取EMR Agent的会话列表,报告列表等。scripts/bin/install_serverless_sdk.sh:安装 EMR on Serverless 形态的 Python SDK,用于 Serverless 队列管理、作业提交等操作。scripts/on_ecs/emr_on_ecs_manager.py:统一的 EMR on ECS 形态的 OpenAPI 调用入口(manage_emr_on_ecs),用于集群/节点组/应用等运维类接口调用。scripts/on_ecs/emr_on_ecs_cli.py:EMR on ECS 形态的命令行工具,用于集群/节点组/应用等运维类接口调用。scripts/on_vke/emr_on_vke_manager.py:EMR on VKE 形态 产品的管理脚本
References
references/emr_serverless/queue/emr_serverless_queue_guide.md:EMR on Serverless形态的资源队列详细管理操作指南references/emr_serverless/job_instance/emr_serverless_job_instance_guide.md:EMR on Serverless形态的作业实例详细管理操作指南references/emr_serverless/job/emr_serverless_job_guide.md: EMR on Serverless形态的作业模板(即作业定义)管理操作指南references/emr_serverless/compute/emr_serverless_compute_guide.md: EMR on Serverless形态的计算组详细管理操作指南references/emr_agent/emr_agent_guide.md:EMR Agent 详细操作指南,包括问题分析、获取历史会话、获取历史诊断报告等。references/emr_on_ecs/cluster/emr_on_ecs_cluster_guide.md:EMR on ECS 集群管理操作指南,包括集群列表查询、集群详情查询、更新集群属性等。references/emr_on_ecs/node_group/emr_on_ecs_node_group_guide.md:EMR on ECS 节点组管理操作指南,包括节点组列表查询、节点组详情查询、更新节点组属性等。references/emr_on_ecs/application/emr_on_ecs_application_guide.md:EMR on ECS 应用管理操作指南,包括应用列表查询、组件列表查询、组件实例列表查询、执行应用操作等。references/emr_on_ecs/application_config/emr_on_ecs_application_config_guide.md:EMR on ECS 应用配置管理操作指南,包括配置文件列表查询、配置文件详情查询、配置项列表查询、配置项修改历史列表查询、修改配置项等。references/emr_on_ecs/operation/emr_on_ecs_operation_guide.md:EMR on ECS 操作审计管理操作指南,包括操作列表查询等。references/emr_on_ecs/user/emr_on_ecs_user_guide.md:EMR on ECS 用户管理操作指南,包括创建用户、修改用户信息、查询用户列表、查询用户详情、更新用户密码等。references/emr_on_ecs/group/emr_on_ecs_group_guide.md:EMR on ECS 用户组管理操作指南,包括查询用户组列表、查询用户组详情、创建用户组、更新用户组等。references/emr_on_vke/emr_on_vke_guide.md:EMR on VKE集群管理操作指南。包括查询集群列表和详情、查询服务列表与详情、查询操作日志列表与详情、重启服务、查询和更新服务配置参数等。
Assets
assets/libs/python_serverless-1.*-py3-none-any.whl: EMR on Serverless 形态的 Python SDK 包,用于 EMR Serverless 作业提交等操作。assets/emr-serverless-job-template.json:Serverless 作业提交模板,包含 PySpark 作业参数示例。
Requirements
- 如果需要写临时文件(比如编写脚本、记录备忘录等),必须将文件放在./tmp文件夹下。
- 当遇到作业、服务、集群失败或者用户有诊断需求的时候,必须优先使用EMR Agent的诊断功能,而不是自己去分析诊断。EMR Agent诊断需要消耗一定时间,应该等待其诊断完成,不要中途kill诊断任务
- 不要去读取scripts下脚本的内容,按照guide文档的说明执行即可,除非你有必须读的理由(比如执行频繁遭遇失败需要排查问题或用户咨询实现细节等)
- 当你通过python代码引入script下的包时,你需要将emr-skills的根目录加入path:sys.path.append(${emr_skill_root})
- 当你通过python代码提交任务并等待完成时,你需要分为两个python脚本,先执行提交任务脚本,得到job_id后,再执行状态获取脚本;状态获取脚本不要在脚本内用While循环一直获取状态,而是应该仅获取一次状态,通过多次运行脚本持续获取状态
PK.s\|���dpquerycore/__init__.pys
���S�UP7�3�3�3�3TPK.s\H_k��dpquerycore/annotations.py��M��0����="���"�����J=F�+��lS���ẇ��f�����3�w���T�¡��UJ���piJ�m[3-�<� 0V�`k/%�@��n��h�
� �x�=�sfqidF�x]a6��7@F����*
u��r&a�P܃Upf���ȕ4�/3��)|����T¥OA��)���3�d�8�J���.�X��k�@$�e2Ǯ��PE���>QAO״����-(�Ea�^]�i
����P�i���b%gM�,������ŀIE�i_Z�]c��o���W��1��d�\Kk���(r��a�V��I���{;��g���~a�1j�@��^$;�+D/�`�q���0�����s�G��<
i�Y�1�qjH� Wђ�I`�<�n4SoOOj'�.,�h�D�.f���.QJ�Gkߏ��d��?=(}f6ren������l� �5o:�� N��җ�4�y�#? ��b�Mިc�I����h+-a^�q?;S߮�l7�u;�bf#w��O�)�?�< Te����:���8#�����a<�����@=��70 ��7�G�X��w��[j�!�8�5����!4�by'�?�q��T� l^��a�5���z���7��1�i����#�^,~PK.s\"5Lyidpquerycore/api_service.py�=�S�ƒ��W�xEi�eWq�\��6k��0vq�G��4
ZI���$�����C�/ �?Ρ�F���������2ϊ����ҍ�=D<UW �8���e]�*�$��X�� .B���eea�$$��,-E�Q��D{qX1��6��E5����mNF�A\��Q��A ��"H���#JWD�*�h�x�"eUr�ފ�0+j�ӓ���!��%!I/�x;y��.���j��$�� ������y�R����ȝIE�EP�q%������iV��#�$�E�Uu���nÛT8r��cu;r����Ϝ fP���}�@K�߂�2@��\!�W��E�Ӣ�
!/�*u��2�R�R��h�n��$�
��5���]�}�T���< �T��#eX��^��T�����|y�2`oJ����Wd4�P1/��,���@)g�Er�e��V��N�v�Hx
��@}Ve��Kпc.h��Av���/4Q? s�VU��� �Ѧ� ��<(J�u���[��r?�c���R|E�We�-g�eJ��?nl@۔t�sa��i�I�,"L�}ZNU�@5�6N��Ӄ�#����ӓCg�P�_�qB��{'�����~���&AY:�<˹/d������"��O���=�wh�"�p|?%7�?�b������7��[ßxဧp��2��b �<r6��6%���A����?��c� �g��$V�5>�˪H�����4��$�b�
ٶ�%�`����%e�0KI�w���n��t�Dg��H(O==;�p<^���o]�ar��l���)��(�lԐ�!MY���Y��5~I�K'�4�%-4�Q�W���xQ��2�ﰗ��v�7���w���s
�㣣wg���?�����lb|(�?H�����ߜ��
e�J���UU�����o�j����`����j��%�|�?�����U!��1xLa'Xm��0�rwk5�i9�����i�i[j�t[�m��,�i���Bw�}۲�\[�̞�2Cm����;�$>:0_r�ƃّ3^�,��#nE����m�_�c��:
�(^���Z<м$�%��=Z'��8��f��J��OWP���59�x��h��2�����"������ĠM0#k�;tHa#�D�����*<jC�
�Z�^��*�y�w*���tJ��pC�65`�jU*F�d��Sš��=U�.�SF�T��e%y���z&��FX�@�Q��P�� �4fc�Ijq�[T�"�y̻X�I4�{AaF����"$���b�@0h\<��0N
�?����lUM,Z�L�>�2�-��(�Ց[8ϟ=s�1�t{%]b�7;�p^<{fF\+)xE>T
I���d���셥� �T����˘�m��1��Q�װog?���A٪�aV�� �����l�4�N����A�.���l��m|r�-g�S.wm��Zk�4O�뼉"�5�,�b����V��iDzK�q�B$WA����Ѓ�y�t��㛛�1r0�{�+��U-3V�(�r�Y��^�ڠ���b%9���0��7]���n�����#��=���H���<�8�;�G8�Y<���}n?���Ӆ����e�4`������֊T~5֊����2/�:Re�2��l�n��d6W�b�_�Cٖ�Ω-��uD�O��ѝ?X�� �-.�!,�N�3EWUM]�)b�I���o;�d"zΨSF���8:���MA0���#=F����9�;��V�"�i���mOe���c��
�������Cg�ʵ�'}д/~��ǟ�V����
'F�1_�iP�>�s���g��k����y_p@OAC承����Wຖ�����ȏ��tX�>�t�ǁ
B�~�Y9i�)��ӹ x4�mN%ړyt#D�k��B<�T%Q� ��|��[X#%Y@��,Z�$�檐۰�,m�%qYY���L�֩Y%����Y��TԈ�wh\P��[P��[�P���< 3��E!
��96�,�c�gք1��<0��k{i��4t��m��S�i|����3�
��k��r�]�0@�UXi{�
����5C�}˥a����b�h9�71��v.��|�L�q]��[Я�{���N&U��7Q��(���_ρ���i�;�=%���>G�F��̫anU��P2��g�8dΦn���D�Kߞ�7��,���2�%/��R?��>���g���}�{މ�\���:ج2�X�/^����
�?b�"�Q,�a�n��xk9ފ�[�lo��ޚm��n/�� �Pr� �hEj�[�i4p�s����M��&�6�k,|$��m���yq���h�r-��@�q^gnB�%7w^�r�X
QQ�i���G�۹j�$�r��Y�p�$�͏���������\�L( &�lz�vw���T�J1N��1�m��9�����k��&�]#Mfs�Ә\E�hM�����(�?;���t.p%EdYđ3;j��}=x)�$�B�Z*�_'�I��6P7K)ueZ'kK�����
T4H.D���|� &�P5۲QA�&�I��K»���m�'����ɝ�Pe�'z��R*<:�,��!�]��r`
Nxs#7O�+;�����|9��!)���i�ֆ:(�e$;���C�.���A���5�Ow'�Tt��aKp�a\�+�cD%9�_g���������{Ul�J���]�����]����J��P=1[������� BD=��n
)�?LJQ�����&i� �es�Qe�q�&)�_�������{7��H�4(���*(R�w]jh�u��?,�����Q�{�n�XF[�h�{����V��c|J3�l��u&�4�b��bqT��[.�<�V)����Ωf��&���Y��X%�W�������.��:���ԍ ���Sk(}PeY��H#js��%��s��8ߋ���4c�ڄZ5b�:�
�HE�Ģ͑�!�g{��O!<nx��.�{..�X[��Q��q \Sa���RI[Zm�>���M ��h��{��9���n�r�r�Q���w��L��w���g�UJ=�X�Z�����쵹��oV�5�M-8�\��~t�>w�,c��+�o��Ȭ,�i�������]��5I��E���>zd�鱊Tˤ�R�˾�KF�{&8e���[5����
@��tﭸku��l���P)�7��c.ʪ���ޱ���֨����?V��C�o����l��
�wms ��Y�VM����v}�@Uӟ�Eܽ�&M� �#h����PW%�x�<[]^�o��/�% ���R0@e�%��Ią%��t�}���_c*Ԭe�i����Bߥ����w��VBe��NI;�\w"�m�$��P�X��m���2fϟԃ�4�hM�a���KJz/wj��:����R*KZ��J�˷r��Rd�ʎ=k<��X��_��L�˩����V9�Ł�0�A�m�w)�PI7u�ѰZ�Ȋ�ז`�ԃ��Lj�/n�\ݚ~r�[qE�k5��AX$�I��Җ�����O��5MB���I\�1�N�>�s~�ѐ���AF��Ӌ�t�$EhbTJ��]G����@Ӭ(u�O����B����8���oo�_��*��4K�)��'n`a�����l@Y�!]�v��/\w�L�Xu4s�լ��u�z�^�?��|�8J%g-�����f,��+���3����?θ����c_}���g��O���Yd���*��8��P�f-jh�o�Z�lʯ_��}��g���]���k�D�:]�W�q'�;�_��դ�k[�ߦ+�&�~H�U�%l,�h>��@�z�� Yv7��xk��F!�LH8!~��]M���ڱ����(h�0�R��Tuh�Z��C�����q|��zF]���4L������$��2�{
H�ǟO齚��C���lQ�������x����(�*[m��u����&�q��Q+��Tw!�(!|4| gSu���d}V7)Ѳ7i�n7)�?L��'s��'W�p�i�>l}`�>�[S{2��Q]���.�/?�.��@�+_a��H����w3�j�Uk<p�']+����ڣ+��\���h0��f�O/T�W�:�|,g"�'*�Ǐ�jT��I���D���!�/[g�(�ߠ��eC{�'{i��O^�<����#L���j�w+��V4ۣP���r��7�kI�
�օ�)�$�4�0�0�=m�p��F�1�����ؔ��.��`��J�����z�����J��@~S�}�a8��cp:&X;.����쪛@�����qy�v��Ǘlޒ���l�ɭS�r��z�WB�ҩ����TVe�x��[=��ˁ����^���WK�?�U���?����צ�����֙;�f���e֝�d��f�4�j|)c3u����U�Ľ:9z� L�2t�9a�'����u��,h �� �Y�"�>Q`&���[�g�sj�seK�~ς/희�߷�8���a��C��.)�ӊ�*�R0�N^���'Ra�$4��l�<w���2
^��CN�
�\����G��]�,���� Z�)�`Po�*
(��nR*7i�0���5����
Ce�F��K
�H��tWI䬈�[AX:ԇw_:�l:?}a��5�iD l�؟
�"��
)�Q��A=ó*��Ū��A��`��&�����PK.s\���J�dpquerycore/auth.py�W[o�0~ϯ��D(�x����!��
���y� ���lg"����q�N���<T��w�s���W�w aE]qI�>��q-$��,@�Wid
��
�6�8DP6�T.S(%��M[CIN� �:1��
9�M@��T�.�~5��d)d�nW�,$N zU�p���J^u�C���ޠ�XR҂|O0*^ϨN�I%K�DX�uB�X�qLN�2�IB�[hc�.D@�A.�q���8��Ƣ���#��;y8�T#�.z��؞����}���,Ȇ����Q���<�չս���] %�!�-��Q�� �<��o���1�k����3���]U%��m��;�u��]6;%#!+����kN[ ���~Mi��NLJӁp0����d
�D4���Q�FE��W�,���yyw)�Jz�#_�o��c{z=��S����^��D
*U�
�W�,���a3�&
�`�\;g����`��/�q�cq�$.�913хD*��~g)��:�k����쪽��qtqSuriMqf�QLnʦ�=E�V{��څr�м6�pі�`I7��{� �ٌk=nK��g�D�;Q�����;��r
�O�A�8\f��j��ϕ�PF{)��v���Y�"c�1�I�2�㉥�E�e��o��)帷3�6H�#Y1K%b?��d��O�v�<�aHH�V�*!�ZԾS3��l�@�ez1AY�"�Z�p�ji�D�Ɍ�V�I`��G�Cr�i�^�k_m�5f��Cd94�d'����vL��e��x=^����D�^��2�_`�N���?G7�}sj�_�0Bm�Ѹ���-ώԬ/�^�PK.s\�
P��,Mdpquerycore/base_client.py�\[o��~���zHBU��G�x���Uަ�c09�S$CR�u�-�A�ТM �-O-�4-�g֛�S�B��ȹѢdY�Ճ-�Ϝ9�;W�g�y#��4�
����Ƙ��i��0/�hNj"o�
�$Hߘ���O2�����q�0�qI*
�lIJ|VLĺ�8.B/ʑ���(�+i��v���Ԥ�'�X��������ʋ�\yq��q<��뾟���ẀBz�4�$J*%G;�,O2sլ��n��n /r��䤘��Y�wQ~�.~��Ya�
?�qZ�pA��ǃ,�m�z2��c�+��K�ӫ.�<���f�����i�B7W�YR$~��!�ol�����E/ǔs��6����@� �� ��p�v��qI��K��7�Y�se:�]eL��IK2\̲�RV?���`�}��Ή%9nw*B\��_�
����%�Q�r�~6�iE`|%D�h%^�w��ħ�8�ղ��������+�wܗ�w����[�;�%� �'���8k����m�rS�Fɹ��O86Oa�
P�� �����E������t�h��Q�=C�ċ�V� ,��'�I>Zu��R�mʘJ�,�U'��C8��}�v\W��Q]�s8Э�cA2��c���\3�ܣ(�_ƣ�
��.3�C�`(��������eL}��n+����Sĩ�a8If��sE��W$�;��Ǹp�0��"��h��T��l��A$�RcSQ�q�& ^+=1)(v��zr�k�⣪3)B��aӕ�9�
�4�7��`������`�`@0Q�o��'��'И��v��`po0�;wn�%��t�����[Վ
�
��5����w�����/~�������'O��ӳ��y���>������ݯ>�ۓ�ϖ���׳��Q����"Y�
��U�K�&8�c� /P�Hh�y�1��0u�؋N�0e�d����C.Y��s]Tg�*l�[�������cj��Bd8Ƥ�n��̠�nsi�Ҏ�)v(?�[�Y����� �r�|���n�y���!.�Ӷ�j�c18:�6 /&W.a�5����)-p���PP/L��8Y��\��O��t���^gk�3��z
��ZfU�7��R�S���\5���"��"{�6�g��xPy���C-�Op�i�`����*GVq��)���˺XaѾi����яZf�B-,Q`J���.�4Y4jSd�4�I�e�I�#�d��ո7���r�eZ���uz'!��>��i����+��<��St�,]�kaT(��
!�D=��BH9�jPĀ���8��a����'�̐L�o(}�v|���lԐ�g>T;�N%���
�v���Z�I6w��E�Vio^�a�cTL0:
b���{a���&z�1��1ehO}�Ar�܀���`��2o��ؽG�(����(��sD;g�߈hZ�)�x
=}��~-NI{r���k���K�E��9hf
�_�}8���V�D�������;?��ӿ3������}��|����T|��1~T�i����I�c�Z .8���-^�(N0�z@v?��;:uG$��0v\�V���w^v�n�4p��?t�u-s�����w��I���%'@�}�ֳ�0�ɗ�%����
�� 5ZcG-�YR�K�W�.�U��r��e���aW�TX����`)p���HM��8%&.8�Ӭ>p��4'�����M�Ȟ\�A�)�.)����97�.g����O�>y���_~y��OYc��u��'6���'�U ����sR���p�� ҟ|�f�5�jA�e�=p�LR�.�����*HM�I%�Z9��9����0��n�6Հ��?�� 9���P�B��<�l��4,ē�Z�HqAqL��:@���Jr�]-B�4�r(���"���-���Y8®�����p���K��.�ؔ���{̄I#�2����{�wYSxo�?�ы���Ȳ����XpH[�/�mY�[7��kU�&�̀�D#�Uo���
�ۡ)!T�fȣd��:$3>�h
2�m�P�=�O��Z��+�!�Qr���.�B@_�� ����]�i��;{�jӢ�z��0Y~4��/,�����m���r�o�{z�ot]�x��-�2�j� 2(��+ ����8�7$�9. n�j�I�8�$}r~I�ж,|lnv�c�=���>�m2C�#[L����*�l�����X���Np_\s^��Ib)}M��J�k�����6�������Q5Ҁ�ٹN�{���).&IP��2�$e�O�{@���G"��(k�f�RFI�"���I|���g/��%G
E���v��A8�tMeQ-�ٍ="�8hӗ���-�L���a�#ߝ�'W����7��� $c`�:�J�`$:%�;:僴�ʟʸ�0��o� �"���A�W�,/�o
#�@}�E�M&5#��䣈F��)�Jʹ�7�N�W�!䊩��TlP�%'�zjk��;mo�N��g��G�q��Ed�l�K�غ�|����fE2�=�
]�5"U�dH\(�M�T�
��hS�W�`H�'�d�c�qs�f�CPv�)Uc�=����w34�8�!��~�6G6
e��(G�e��3�0)�S�Sڙ2-Б�We�6;4��6.�{D��{djG���CΖy\Y������Z�3��v�FK�P�5-�y�$q��Q��9��Z{��k� �9z2��k����>���?B��/�I<,��AXL08hA�E�uE��7��Qh��^ĥU�8.�z��p�,�K_��q��m�.j�g- �2�]� ���Y������<70�:i� ��'An@Ʋ%������|� Ҹ�u���yZ���1�a^$�]����j0�r돽t��X��?��E#倞�ȕ�KQ,��IZ#���Dq�^0��i����p#��JsU����n#����l��������DT-�
�B�@���҉���ZX��d5t(`�{��+k��L"_�0j�mu�����o�R.�+L���KR/��-{4Cv��f�u+n�T�+�M� �.]����ٲ-',���;��[ө����3X�p��d�^K%����_V�yՁr}"�ҥU�5=�+�@����_b0�ob�>(9���/�)
-��4�,R��K����x������R��,f��z�V1�4K�s�P
,��L//>��ón.��-��Jcپ���(U.�v��*�v}Y�m����ey~����PK.s\OXm�&dpquerycore/conf.py��Ko�0���H]D��G�f�'��5�ae��$4��6d�?�мgX]���c���<N����~��z5��WF�lG��b��v�WO#���?w|D�4D�Ok\*��0���g�n����Ĉ�JP�k;7������f�i�i{� *�}���� FQ�`��Ii
��H��FfC�a�0����Inj �s�\��(D�T���P',g��\�&n����3�az���
��p�wp*�M����lW�C 3��/!��@�ڷ���f%-�1��
+��d�C���pF.
.B�ϒ�.���t�]%��cھT���)��;"�_�z. a��^��=�ݶ+ id��d�eU���a����ar�0��L4WbyNM����lO�[�_6t�S�-��=��e`}0
]dž��L슌����a��1���
��Z��*x
�2� >'��E��?3xox�c@�z3���w("v���e�� ����+�J�_���1�PK.s\���dpquerycore/consts.py�TkS�@�ί�QgBp@��Eg:��d%/�Xѝ�� �M�UK�{w�Pm>��gϹ�ݻ�
��&� ��G`��6������2 %q�{q����AJ�a��dl�D�I�S�����yC�;M��d+P����l���~@��y�̅ڲ����O�F�w,!�B��Y���4�pY*�
���G�iD�w����4xWs���������T��7�7^F�0����,,�O��7
�;\��Ӹ��D>�nj�݇-?� +.�!K��h��Ӡ���U�I��?
i��d�:�~P��(_�eo�4@�k|Mc�J$()���o��6G�C��Z��o��>:����B��9�����h�O�"h����y�YakXw�R�b�V��r��/xU��:e��c�A���5H�U�z�ͣr��t�? .;t��bcJ�`J�줷��7Ή e���i��b
;Z���{�.�,WY�l�6�K��t�C\S5`�8
�+��/S�D9�j)^U�Sȫ�[@�닆dY�k����Vc/H~�Q�{)��nd{��(���#�F��F�3���A��Z8��d�
;~b;��vM�^�l7�v�Va4�cqQ9�������*0*�� ��x>���E������&��;�����7��&��B����e1]i8�|73��U9<�0�>JX������Ľ3�y�Y��ީӖ��B�/PK.s\��ڻ��dpquerycore/enums.py�W[o�F~��X��Ω���#�� p�4=B��.>V�}g/,Ǒ�Sy0�7��sۙu�ۗ�B�8�F[Z��2�b�g(9T�h4J�1dQ�!E�%9���d�E���<adF�����+�ُ��p�8��װjm�x�
�Wt�� ]5KJXUv�p����ʳ.:ϳ��.�N� y�+�-�9���*Kw�z)7ِ-�1�YE�D�W��W��?ے"����~��O�E�(�1��H��
}��Z
k���?�TZ �4�A|LiI�c����٦����G���~6V�kQ�^�~w/ ���p�?d�n��Z���l�xܧ'qk��fmH8w�@M�R��_���5��=C �}��*�K�ֵ^k��Oi���Z�R����2-���_����8�X�S��`���w��ο�q�A�Vq��B<� v����,q�p����ƞ���+7Zh���� �x�V�Ai�6��x�<{Hj��?�؊� �rءϩC
��ؔ�C�Y�8.�1��i�f�KB�����q�Z� zԁπ�\Ј�٭ eq|�~A�j�r���/I+����-a�B_��h���iۗYZɷ3�'k��,�����r-�D*�0$��l�ݜY�b�b%bI��2f��}NN��&�bGr�dy-f;�Ҍ�[)agl�T�K�
9c���?�K�َw�9KRl��Y�Fݢ�k��RUKh�����K=W,ӳ�����"%�������t�kӺ�x����u�����{B�7�&y��VrT>[9�hV3Q��i]�SZl��R�Ϙ�z���a��x� eڑ�^;��`��A���U����u�g�(�z>tC�§�����,`�����L���GwCG\������L��PT���=m�0����E�Ne�}��Zy���G�~���7?�U�]p�U����vm�\��7"J���C����`���d�h>(��{�R��=5p}�OxOf���
&�3r��Z@ъ.��������bpJ���M-/I��]ߔ��j��kqG{�H�Ʊ��n�!i��V���OE+�uk���@Ê���9�|Aj�=3x��/1E)!�w��I/��������?Ջ�
��R\q�|P>��g�)m�B���Ʃ��N��wSJ��uU]WKZ`��8����������u���a��E��*z�fP0`�CP�O*�&�8��dtڢtk�v·�@��y;iJ��[��~�{��ъ��eJ��V�:^'_�ct�7�PK.s\�C��Vdpquerycore/exceptions.py}P�j�@��)��u���R�k��X�0��ꌛa��;?V���% ����FX=����>3��7I�SF�'�eY�o���
�h��u��E���j@TZ9��RS@A�����k3�LWTUl�ލ��A�?��K��
�~�f�$�,k�^ur�Rer=k8��0^����a<����py���D_i�b�G����;�XY>&;�����gs����-�QPyH_�N�<�O_�PK.s\�m����dpquerycore/job.py�X�n�6��S:[��0�b]��d�C�D�ldI!�&ưw�9�HQ��8��o,��|<<?d���|U9a�Y�=�lx�'�P�rK���ҢH���ż~h(?d�qZ�DP��e�P���R!o�r��R��sr���gɪRHa��--�� i��-ݧj���l��ܲ��5��U*�����g|�y�h-�c����2����>��)�!���|�F��"��Ce�J �J�d˫G�K6M�M&��H�@
f��;�d�������X LY!��]Q9ݐ`�L����fN�Wk���$g
�'Y����\U%���%�:��֫�F4X5�����TҤ�U-fQ��#s����:�.��G�E?�x~������pގZ�y�<Z
Ne�KE8PX;��W�,���TP��ԗi���!��ohg�[Yp[���"��
�/�xQ����)H3���T��:�'���I8y��Y�Z���S�4e�ܦC���A�#����A�����\��Z�IH� ��{&{xf!���P��[��tپG���L�����d! Z��������=�Τ�E�&���#��&w�h�a'7�Ȧ�j��Yh11P����u�V<*i��h��� eE}})�)�D�}T�}��="�R�&eR<���+��U��y�u��t�%����V4ҶV_K�U�
kT�Q��#-��et1��
���L,���Q�6��P���k���-�T:�̩ƕ�x()�m;`h� �hm�#��]N�9�^�Ł�ʋ���BA��+��t(f��PF#�#%�0��OX�3����|�c->�h%�h'I�}�.�*B�L��9�$�VL@�2����Xb]�����4 ��1�=7�E�.����B�O7�����S5�n�*E���(~�����U����]����*Y]�yq}��#�g����no��\#�t���yJh�ւ�c3̬%����ѩ���s�ʼ/ш=F��e"��>1������F3��;�َf�&4�դ��Z79 j�^ơ��~-$:@���j�cIw�N�J��<sdT&���K���M���*�d��S���3(�O4kp\7����X{���n�v����V
���zf��T�ʠ'�"Gt�z�nfSH�i:'g8�w:a�+r�T#�v��pQb��Hq�
z��x����B��XRl]J��@����e>��<8��B�q\��t���ta�/H3�mG�0�Ґx�zhs^�u�
�4��UC.�E�B�{6���?���ҝ^p�O���ª�cWn
�oE��F��q��� ����Ja���PR�k��[�bq�_�j�C�1-��<�0����������ʝ�@K�$yv�R���B���9���q�m�<�>���3�9g?(?
��t�۷����t�_b�/��a�
��� �A!�$���e�J�Y2���=�ӽ0]�������h�
� �KL���}�ANe�W��Q༯\+Vp��S{F�N��lN��!�3A�_���ͳhJ^; 8��[;;��0'����>�턁;�6gj�ݱK�
qdv�}�j�����a0K��i�c����{$��������3e��:�(]Z�X�6E��M/����>r�l9�����@�~g�����3K?���!_l����>�4�7t&�Za�ƒ�5;�s��
��IU�4bƐ=����W#v��M�PK.s\�]8f�dpquerycore/log.py�Q�j� }�+$/M ����=�1F�[(b���a4�m���i���ū�x�=��薖ZJ(��
�h;m,U�����R{�=wB5Wtǥ�G�
`�}�`Υ6�쌶� ^�Ϻ������6�a"�&�e��"�䒭]�Mr�!��^d��&��w7i�%ԭ
jʘP�2�"�:�5��Ĥn���6hQ}�8���h��R��M�X�V���_^p�9Rt���F�3�R�E��F{ d���'��K��P�ƀ���/t��@n�i|[��B���A��ިە��:̍�Czi�3�X˲iӠ#�*m�V7�͔�ܻzΜ�X���'�O�x�C;q�ݧ5����@��������?PK.s\�$��}Ndpquerycore/page.py�S�n�0����P"Q�^�"��S����q�B����H���7��Yώ���x�5������It}b�5����E�A�5J�Ac�5aaV�3���:�ٽ*����ksja7�D�kY�J�2ퟷHc˩Y(*��}gtӄ��m�E�y}����l|6=uZu��e2m�ߛ6�a���J�s*��誼Ec����Z�uZF�k��74i�+�E�4����W�ή�rƚ��4��N����.u��W�.>�hpُ�[�AUA|Mp�"���TyF�w����/F ��4J�v�o��S��K�%��k�|4�D8�� �����TN���O��V��6+}Ɉ\��-�*��wk�?_={;x��[J~PK.s\����dpquerycore/protocol.py�X�n�F��)� �"G=Ȓ8��T����ÊI[S\fw�F=�T��9��s��z�Ӥ�cdv)�$�ܥj�C���|3����l��mB�G7 ��� \�ԛ&���DO�*d��T��6$��A.}BLXQ��{�嗏�~�I��""�w�9�G��A�ÿ~Fn��Q�%��8�,��XV�' Y�i�M�@$,F� IH$1P��M
B��(�@X�����
l��`eW��X:��}�e��K�$X��n5�_�/4M�DYC�4���y����`,*n���>��-����|)�X��&�llw��E$���sYeR�k��-��bC�[��dA٪�NE#�E62}�E��$��ʽ�Q�SNW�悆�-F�K��er�#AH��k�������6pz�[��hL�����Id��T[�=*�CIc��CC�mB��M"Bc���T��r�3䵄P�*��i"0��A�.��7���`��n���2x���yp%��k�=�P!�h����5Na��jV�8����Ql��
��93��.N�Zy�8�
�
�Lq L#ew~dU(H��k$ ��j�t2Xg��d{B�o��8� ��v��O�M)�y��&h6�t����۩�X��[2��`
��O5��G���k���T7C���Fkn��f�uй�]%�fA�!��oų��|1��C�����v�v<zY�(/��6e��]�1��+��,��u)�3��yks�]�,���XB:-NM�� ʜ�H������a�"�����e���w}��:wX�����j"4>SG�����~��.(xh���R@��Л�`��ٳ�Kf �'8 C�%Ŵ�q�R��{��s�����{�Z�2���,d��B�����X�r(D��P�L큆�>�Ѹt�}n,�U�-m��j&ڬ+��K�C;�{��2�mP%b>hת_��]�S;&I��Kl>������X*'�d4(��&���m����C'Stb��xG��g;��z�<��"��*�Ъ"�����8٬9��)��h��]�#���{y3/-��+��`ו�����Tmh,9*��Xm �x�B��z�����_?���ח�}���'y
�K=�3hs��l!
�.�)xh�c�ס�Nt����wN�Ė�����x+���}5�}���������a�_PK.s\�����dpquerycore/result.py�TMO�0��W��P����T�iO{Z�e#+$�Ub�Q�P�;�������y��|������Bj�Ô&���fxQ�k!q�|��'�7îy�H��J)Y���X�|M�<
�@)�LS�PصK�U�kPZ.���H��Tc]Q���8��jGC���'�#�����F��"�s�J)�z?`�]�9���FC��(y�n�#����_4S�ծ�3����HtS3]'I�����7��~=�7��!p�ofo<�[�/�����p��+<���jκ�S-c�o&�~�s�����I�e��F�ɜ��F.
�a���X�8/�i��}��j5c����op�^P�X�p:������vk�]B��E��2\L=���{q��Ue�ѵN�
E(-�wr���=�b�E5v�̟� R�h���Q�w�2��;��θw � �'���B
��8��B��_N�Z�3����?t�������U"�H����m�LӜ ����PK.s\���j��)dpquerycore/task.py�X�n�8}�W
ۀ�0�E���M���&m��(E�m6���T[o��^$�9q.����ə��p.:d�4�|I<`�Y�
,y�!�eH����G�/$B��r�,Zh�~�(߆ �^��K��&WG�.E�l#��<^���٦t�T�"��L��EƩ��i דꀨ���U?�tAcɂH�0
�P��`����gA���Y̤���:%�� Qf�3nzJ,�j<�2dFN����&�$�W<�Rw�,����h��2���)�[�S>�)u��j��j��J�;���2��n ���
�e@�#-�*�cm�Yʓ�r��]��U�c��7�,�s*3;�i����Ljv_��Z��l��<�`�Y%=�a ]�1����x�FtqIs�>:�A⌒-���T���
Y�3K���ZC䠝��4���T$�0I�7u�pB0w/����R����A
NW,��)��4^� �eK��-����k���e���9l�
扄9��X�(M/��E�W,��8����W.�$�/�+����=ҧ��cDD�_*H@b��Z� )I��F�"��J��]ը,0�j���~t�2"�sh�΅\RB���.JZ�����0��ąX'Y�@̀�Q�����#�Wʁ�r����З`��r�rD��(l� �\����[�p��'�![2Hǯk�͜\��g� �N���LW<�x<
���� F���'�{�5�ft�m2c����>�Fy]�QFM��� ��Ei���#�l�
H���?+�F!�A��mN�����F{Y�����@���ZJ���
� ��f���f1MZ�����W�,�(pÊY� ]1Kß�0����E�&,h$bB�'4���Y3
���cYf�"�>�p;t_%gy�"���n��5�d���xxXRNa��c�J8���P�wxo��V�/IR�<���s�I�.���IF��(ل���h;c�5�^oljz�0�����X/e }3���ޚ��6'�����4���\��W{�ʻ ��3/���.$���.xK^�Z�b����f��2��9h���hY!|�ȸq=s��"��w���2��,��\B�8����ó?�W�g�����gGsE��^��:z}x~^�4�S�?<{�����[d�T�rnj[l�O^���7�O�������J�S͵�l��|~:?y��U����'��pJ�?T-b�,�q\G���.^���
B�Ҵ|��vApxv���Aص쥁�R��h�F��px��E�~jy���nQ-��ӂ�]�0����
��^M���sb��[sZL���4��R����Ny��Y.!�Q���s%����
��W�@�:T/<sQT[S�qToPG5��Cb[S5}w�;ͯ���;��l~�
��P�[�U��ٳz!�������a˧[Uj����C�,B�R�0�F���n��%�÷�0W��%��)ޒ?���e�<*T�� ժ�T�s����n`w��t��t+���n�h���/��_D,�vl��!�*����4;ƕ�� �U��Е�5���bm��l��r�r��l���k �pxs
\xm�����m5�8}f�GDk8�>�BĝN�_2�s��噴j%�א����&�:��J�hx��~
�7�f��U�[t͖����M��e�nW:6+�n�`�S��������PK.s\�qX��dpquerycore/tos_auto.py�X�kE�~�|9vO.���� 1ٖ��R��PE����v���ef//��wŗ"h�QH�И?�楟�|ffwf�f/M�E�%d�f����<��qFY�(o���q6" ֿ�X?�J�Vc��唣b�G�RBp�_{��h�E7p�t�O�1^@<g-4���/4\q2����, [r��PJsE����b�1�&C�(�˄s��@�MMǠ��� FM�&2B�',UBm���:�}u���U]�⪽`SAbRղ\C
yϼ��Z�KÞ�B��oE��ˡ�#`d9�V�>0SB���?��������ɽ_��>9x
d�Ѓ����+�Y�~���'{���!#h�5�bB�aD��� ���/ �H�0�E��X��k^o����w���x���$�}I/i[���s�Z��zx��8f�%��&�����6b�H�}�[Y��,�o��_��&H� �>���o%a6H--z�0�T��x0�D�l���@���8f"P]e���V�
���:l�z�.%H��µ��bx�>��c-\�
0��*\x_
/��v�_[��v/�tCMaW��)�od����U�+��)S.�G�ɰ�|eu���^��<����<��{M�|=ؠ $"бW���5?^(������h"<~��OiRA��% ��|���`�g���C�:���!%��|o\��_���Z-�Y��ۚ�[���wJ�T�$Kh<�D�����k�ǭ#������z�b�O��)����6�U�Z�a�<PI���Å�T3��U9�V"��d��X��'����5�bN�s������nX�ݠ3�%ẉ���y4��q</�ҙr�8�ضɳ�d���@T
�*om���t���g9
�M�1���A B����h�w>�eWuɣ�v���Eΰ���O���������]dg�$�������/���y�s������O�������g?�~�"�D���3�j#��I�p�P#AeP]Μ�n<��S>a�����{
H�����d�Bj�n�b�$rz��[mr!sFK?��:��� �ZA8T wԠ`f�*#caA��������R�*=�"�3�����h�sv
\�P����Cv��k���0�쀸b�t`8h�)t���Qю��%#��
q�8�=e&0��>�!C cQ��MS����i��D��x��,+�vx�^0���R8[/T"\��H���{G̶����)��� �|���1D�c�/���J ��LO/gŸ".HR ���X��`�nr�J���h����G��%� d��P`ބ9Lo�\����{��Il,T"X���ty�F�(��Fj����8Y?��d�/�S������$�
���z�%�aG,�����z���ek�h�`��ۢJ�U>Q"����:j���*e�����PK.s\�j�N Sdpquerycore/utils.py�WKo�6��W�X�U�A/Ʀ@��EY�^o.A ����F&�$��X���eg���T�"��|�'Ŷ���Tb�f|1�*T;�Ў4�B��bK��FY����L�5�*�� �S����%���=�XI5�FJ!�TYm@�!!+WZ����
ԡ �P�N�/���|r�j)�(D�1OɯT��~:��VDi�꼖�b/������"�[3�!-��3ӛ8X7��Hn�*���c4Z
t�f��t/�N�N(/�z�S���Όz/���� ���T*�%�
������Y�>,r�3Y8�Z�{�fg.�_ȕ��<}�@I'�b�Y���B$���Z6���@SdK����yٓS� �x��Z��PJ�ע�iJ>
I����8w�]�(���ҷe������.U£�H���֩`�a��f��`Kh��'�;��\�䴲�Hrz�m�e�I`32%�M|�;<�9�8ܴin��R��?q��;�M/5J6(:��F��^��w�Jf�Y��k.Ӧ�W�ڎ�d2�f.��
�<j���A4 .�1)��&-^uG�E�U��R#�dF>�1���������md��g�vc"�fZ�*�9�:��Gt�S�F/%9f�!�Nm��J �y�}�O�=��
�L衎|-ų�䫆1T�VP�ȪT��eG]}����8?(��٥��j(�w��������������Sp�x��Q��R�{h<]L�h>��O�ө=/rx��р}�e���>`MNML?��E�nM�>��]lL��!��Y(2?Wl�x���+�0܄�d)D����8�"�9&�q�cG'�[(����܊��8e������-.��S���l�)���g9�jz9U�]�����E틯�������{;
�F� ��}�(����>dpR�ssK�K���
��O���/M2�DGw���b�¿wO�f��(��xQ�"�t�5�����qkϱ�N�D+���V0cO�:��I fswې ���С3��sZ3�a��{�9�y�'���v7�o����f�
��p����ՈFO���.U��n��d��đ����!O�GG��c�d���sp���ex7xcx��h�2w���-�&�n�"W$����HX��=4P������Xy��5��"m��rO�
q�O����yc~�b����eN�y�W���
S��b�<5���6Yi+�����oVT�WD�]��i8˷u�k�$���]2c��]���0�՛~�I�/����n����oPK.s\����N�dpquerycore/volcengine_auth.py�X�n�6��SpI��C;.,K�e �8����H��X"]��a��}?IHS�s*0`�m��>Q�M^MPʲ�Χ��W�w�� /W�Kt-\qV��E~�0ջ��P�%��aEJ�<�$ƕ\��D�X�߬�ѳ|NO��
��'�)����Wk}��Oɗ���y���B�x&Ō�<mM�x�̋�|5X���H�!�>eܨ�@9��9.�L%Z�Za*{�+�$KY+�@��$�� ���Fi���E�aIL�D�6�
�`�XtX ��Ƶ!��&����@3��%���'�B�!7���3uj�=F�8t���c��<gT/j��_����oA��>�>
^}�FG�
~�x �Q&Q��%�49�_��%Y�.�~q��K�4��U���F_�Mnoo'W����\��(](o�}]q�����X&*(���z<'2I+�ANbA�h�Q��&PjF!���Tf��T�Ũ�bP,�Ŝ�\.�08:>8�̎�{�}��� ����o��oWa�w>}wu:.�X�,I1e8}�]b���@r�K�2�Dv�����H�D�'�f9
��4R<b��ذ�v�QP ."Kc���J�b� �i���x�����"�5{~��<�Kr��0�.8J�P�q4��3K-}�ѮT�:],Y� w���(q���T -�ƶ_�-I{=�����E�U^d�j���{�(J]����d��`G�J�J_�y=��k���xp�jn�녫U�Ұ�V���]����v�&������=� �*r?���t���t��!vU�%�S�wOi��jNv��:��#��i�/�̉�hQ�}'��Cq�0�׳?
�ߺ�f����[-���:Q6��A(5������o��쑌�!�q��YG���}G�Z�^x��p�`,�mT}@4���P�-B-<D�Z�m,kӬSٌ�"�7�Tx��W2/I8�>*G���ht<��1�96豳��{N��3���
xE0��E�����{�=X�g(l��>�Z���;�-s��=�9�0��cf^ᆹ��}��\^r��O�$� �NJ}���g��f.7�W��͕3�ԃ��o����M5��m5��l^o=����T��zk(��aK����-���Emں����:���A��{���9Fk:�l����������e����l�^��C�հ��K8+H����J4�c� !� �e}�rsBa$�5����T%�[���i��>�t��:� )��������ۂ�c��ܼ-��XZ���Y��_n(>T\�wFRF31Ԫ��y�6Tמ3c� X@�#=g�6H�K����-W���%���\��6ӎ�1/��=����PK.s\G�O�serverless/__init__.py}�QO� ���}kbL㢯>h�ɖE�:}1�a�n��B.��/e��u]��;�s�lP��<
�:���͖3�x�$��l�&kv�**3�CeK}A�a���Ϸ\��Bn�E��H&ŸA[q�}C������e6}}���0In���.�$���<wG�$ϝ��k0£O�/κ��x���QxP|@R���-�B�(3�pvFXA�#���6���]%Ƥ��������m��s����W����Zu�<U[^AHV�Z{D��,:0��fV�o��T����g���0+�>=Hn�s�M-���t������(��(��n��Qٛ{_F�KZ�&Bҋ雇��/��"�PK.s\N��+]'<serverless/api_service.py�[[o�6~����P� �^x@�x���Ic�{(
A�h��,*"��+��GR�D��e[N���C��9�s��́�����Q�j�R�p�Q�xcp�.��x�� �[!&wK����#?��=�"<ΞXė�F��S��@?��~���u����L�Ř����1�� Y%0�˗�LD��PI�
P$�ߴZ�"�Fc�8=�{ˡ�� �` ��*Ĕ�B���t�A�l0i�N���{�]������7��Xȟ�����'��)�c!���0�i��{PO��rle�F{wJ�w������n���KS�'�_V8��,sPu�Z*e
��ȇ�n4�$NR8Ud�XTs�b4����D�RO�͢�i7��u�tu
�2"�:���$D�!��fHdMtJ��<������wp��ތ�$��[Z�>]��@D�n��7 ��iL|��:4%�}D�S��ۀß�7"�ޯ�������X��
oCzJշ�/�H�Ѽ9�j_�NSH'{!W@�FΕ���f�ϡP��U����jH�)�|F�̐j�*NV�M�eErS�]f5dv�B8[��uV��OA�[+XC�,��D�Ր��}��a5�����3�v%�zl�ZA�c��E�X.+��.W���<C�yD3�q� ���IJ����hry�
F�W���D�'��xp�y�x��k�]��㱮��9��Խ�
/G^�?Gg�6�D0o�sCH�;�]�ǀ;�#pВE-�Z�_�F����4^.?�MC�- �����_���n����G�{�B�g[�~��W��'�mn�e_�pG/�r-���G�,�鷇�<_���74�B�<�0(Ƨ�,�8��TɄ���W�,��/��:�����g]'s՛7�~:��
j�Q�e8
�B���4*٦������-�wQ
fI�.RC�b�l����m=�
�H)�\�K��z��t
_�b�)�@_���4�a��A �:��5�)��J�36땢�t�Mٺ���u�!�E�D��&^c�e�8��W�b�VьhA/%��x������l����������t���؊��f#����P�[�چK�+� ��j�L�z��ًwv�_��4�ج��a��G����Ũ�EߠN��N��s�\�Y��ʫ`�fm�}%k�k:�Z��y�����,<�A�q�GV�|�'I���%���IH|��������ٹ�~'D��d/��W�*�a&<��u꜠8����5�8���'&��q�#����y�p�榒3�Gw�k8HsJ�;�������t��T���D���Y��Ù"�dI�6�$+���c��JS��s'�錨ݝnc�
G��ez]`�3�~�2jR�b��YT�� ��c�pfxЁ؉�.�����7U�d�0�|���1T|%�Ч�,�UtUH�Z<y&��ؑ�Q�\$l
d�6��V�G������~��>
*o�P�"E84
2o�ޏ`���On�0"4�0
�{ױ�ܵ<<��dKR�L����?dO�qJ���姱_苯�� Z�5e˸�Y�����E�-�!}`)�Zyf����5�i\Z_Xl����Ѳ�N�FI�j;�,���T2��͠x�.���V�����8������H���"nd^n�鵔A3y�"h���۵�-ˢ'/L6��uIe�I��v�~��z_��qpQ?���)�X\H�d��T&;�(ӎy�\6췤2&(�
��L^+����6g�ټC�n���A}f6˷�Q\M��g��^���Y��[�v{�d�ٲA6��2M�,�r ���U}�8�ۡ�l���X��BN��t�e�f��,n_O6bTݡC~�ǚ
f{m���,��'?Ljc��:E��$;N�͕��ᘿ����]�G����*��ՒCnQk;O��6�t�מ%�b���SU�������fu�����V�;��,�5^��b��Êe�ē6��}���sl ���ux�ͣ<{�M$��f�oLt��t�h� Zx�H�����fl9�)Y��z}7>�ܤ��l,��,��҇8����� MQz��<߮��_���;%�����)p��S�a[�[�����}�,�
�[�
WMՎ-:�PK.s\-��!serverless/auth.pyK+��UH)(,M-�L�/J�K,-�P��-�/*Q��PK.s\�����-serverless/client.py�ZKo�F��W4|1=P��=
�^�7�nb#����jI����5�ק�_�)ٞYD�lVU���*J���ɺ��@�c�zz�*9-���� ��c� �����N._lB���\pC~�we+xL��L��5�������"��L��r~Svu��uE
��>]�1�A�=]��u�pRr��y0#Q����8F�?���Ҹa[k��z�������X��(�""Q�O�d �USr��,���������k$'W���^��Ֆ��0�J��ʶ��yV�es�9~���#�a��9�Y[��F̺�A+��@@�����,�}۞:K���p�Q���L��>!kM��y����8�M�EQ`�=,�q�֑Qͅ��Ru[���8m63�~�r�pz��]w�nŜp���t�$��t�J�T;�W���
dmK+�����l
�����������c�|����e�
�>�;G�Ow��_�yk��s�����Z� Ƌ��1֤iW��x>NR�{���\'~.// ���WJJ"K1�SZZћK��1(�, ��K���@g�3�)�sۖ{���!Sw �X9��jHVcar�� ���z7F�Z��h�.�C$�Ϗ�8+73�\�O�S��ʹ���w*{�xi*Yr�v�K�M�b&O�C��po�zH2sP�4�M�J�(w/Ae��{�7P:�g�7^�,�v+-��R��^aQ�W"��U$����#�f�Dz��+9Re��QTe��յ�ƨ�|�\����l�ֿ�;��T%q�D�ķ5��V�R��4/��E��!���҆�����T�Vs]\$���劵�2P
������_M�����&�KU�cG����K+G��^�0N3����r�����mFj^�c[�ɊAߛ�e�k����AY�hN6
+E�p2�!�������e����]���{�^�o��}�wR�+%�#�NK��������Tm��>�}�Q��=d�q
�{% w=kف7GOJ��IcA�~B�
�]AzY��3!��A�Y8O�����P�(hv�p��X�&rL��w.�8���G�`��1#�(������\A���%�o)�vdu�b? %���y}�$��
�\a�Q���"2�:G��j��mEԩvL�-�A���6G�',���/�D(?厤m�ѻgJO�k&��G{$8�Ʒ�=�S�$&?z�5v��������*���x����O���T�Jŭ�9
D��z��t����1d3�1i���⦬
�t��PN�p�B ��҂Ôa���/�o_7�)0�$�~��dҍo�~�F�Eo�T~ȳ�=s�-��$<�$�^��ˬA rP�� ����]�����Wq���q��Q7�B�)>��T+��k��x�*&0�E�P��BS�Yl����3�҆S��è�<������4�t��tҚ��ͮ�+$
�Ӯ��)�g���xPM+���ۺ��}�+e�5�.A�����ڎ�žn�W�3��5z>'뺲<�1�����e��� i�A�8"���c�iC~�{���#�#�&�sEǯ9G�{�Dp�#�=h�oq��U�!��LW���N���R�����n:�֊��\������=����D�\C�6D҈ ~��D�_�����$��m¬@��9�r����?�Et�<=�|�j�-ajʄ8@��8����P��&��� ���I�m��J�I5X6�%�2�d��G�P6u�x>F|Nj�������8���h���w�9�N g���M����Փנ�q�i�&��9��4д�-cIW�0�4�y)y��
>,JR�s�����:Ύ�^��>ý�zB£m�����;t3BG?p�I]O�5�]
�'\p�����@q�a�6;�� �Mژ��ڋF���T8^��F6�CB���j|�]Î{�2i8�T{@���zJ�]�+|�&������oZ���!m6��<�0&��)���~EM� ���T������܀K��xҁo�-����d�[�x��e�>��Ɔ�Yz����ԗ`'<�}�ȧpU��V�a8��5Ш�tF��H��_�O��"��-�
�'G:��r.��$�lv~�.
Z��WW�d�&q��f�-G"(����r�q�ݎ��X�s�:�5�
_���,�0�zʰ�0n)��'��'�@'���_h��3`�(ZG�z�p��fD
7�~���cT����X[^~��)�߷]�b�&�0�T#$/�$�};$Ob�w�Ӂ��>a�Í���}/���PK.s\�:Q�" serverless/enums.pyK+��UH)(,M-�L�/J�K�+�-V��-�/*Q��PK.s\b��W00serverless/exceptions.pyK+��UH)(,M-�L�/J�K�HN-(���+V��-�/*Q��d��PK.s\�l�!!serverless/job.pyK+��UH)(,M-�L�/J���OR��-�/*Q��OPK.s\�{A�(&serverless/log.pyK+��UH)(,M-�L�/J���OW��-�/*Q��Ow.-*�/�PK.s\�[h�&$serverless/protocol.pyK+��UH)(,M-�L�/J�+(�/�O��Q��-�/*Q���PK.s\�w�w" serverless/result.pyK+��UH)(,M-�L�/J�+J-.�)Q��-�/*Q�PK.s\p�?��serverless/task.py�YOo�D��-��+m
���"-"$n�6لͦ���س��xmg�N�T=� �ĭNp��6��o��=���f�M��aמy�7�y��R���<�tj��ﱐ!2 |�u�dy!k4�E��bg)��g�x젻7{����g�A��d��=�;�!�2���`$s��b1��V���c�&>�<��f`��2_WjC�yD(�C�9�B{���~�h4l�b�2'�h�{���j6��J�b�<$ ��A���
L#����1�֞5������b1�{��p9�;�����<˝2�Vѩﻨ�n[.�1S$`��{���\�? ��#�GA�6�%�q�Kn��K̐�<��x�m���TToH�5:b��r\���Ua>�P�J�$��i�O�"��S��cl�����́4n�������u8���":�q�u$�(6���iܖ��h��1�\N��!�M�����TU<p]A��dH���'s�Pb�i�1�{y��{�jm]����m&|��
��w�-n�����W90�k���M�&�f���� �0�j�sL`I��'��U�+�Ȣ��\�`��'O���c 1����[��QX��!��S�3s�L|D�P��AX�\U��wm�RO���'��3,c�A��� �J����L2��!�b�,BpN(V��/��9��2<ĵ%��2�������Fa�,HҔ1;G��~Z�*2�$x�Q��Լ|�V������Z^��F</( Aþ���V����@��[a�.j)�4�X-����v,ֶ,�ថ'�V���aݷ���T+uF��7T�
:<bHpC��?if�q�ҖU7z�[=��� Vֺ�B[]�܊�� �x�E�]��I@}@�2�BX:�6���3�PFԓ:H!�@ߚ��O�R���*�S9�:
|Ⅶ=qf����j�-Ǵ�(
�և�
� ä��4�77I��O�0����̍Eq�ۂ�t�e�
�����ڄ�N�aq���Qx��Eu�%-����u���sxz#�Q)ֽ�?d��� ��r.�9d�׀���<��/ �\���ď�,3L��X�y��뜯1������'L��
SplE+�5y��b)�( �;�=�G�+;��V6�5���ΐ����J�,�{va��
ҀE8��E�S�.~�B�N�#>^��u�n.B~=���_M.<��tm����~���,���x�����u�+��M��f���h�ǖ�����`%�:YX`1�bn�c����uA<3l.�tnꧥ�?�Ӳ>�Z��B�k���N�u㽈n�������[Uk
|�pte
��H�R7_
t����e�j*��<W����-&�}>�u�y.+����)8���J5nu
�hwP2+S �X[�Z+�Y�gC1��l�(A��Ǫ�Aε�UO�_k���76�/�{��;��{�_7�
㶹?�o�6�]N}�%�}?Z��=
��f��ڒ����V�&�Xt��N K�W�������M=���M�7���n����?�T��x]����o~�돟��������ϗ�~��W?��|�����)'���*'�Z�>=�ml����N�x��,��1�6L�c2�R��0�;���_!�ʬ����}uŊP�e,�Zݵ�}co{k}m�P
�yO�I������e����Ao��c���7�v���oA�M��@s,��Yɪ9O�Z�u�V�^�K�����0u�yQ�[�@�<O��,�VW�$�W���L�\��C*5,få�?��Ȝk΄+��7���Y%�ZKoa�'Z%p&8�C'*>��g8T���q�rP{�����~X��`v�T�iV�eQ�]��]B�n�n �����j�ͫ�t�sV-A�P�
i�ڍPK.s\>����.python_serverless-1.0.3.4.1.dist-info/METADATA��QK�0���)|N�nC0��XA������]X���:ͷ7Թ�����w������V��C4�J�����%�D[gyİ��a���b"fb��z�{���������5��)x��ۀ!A]=�'�#��͎-���(�Q|$B-\h틃�S����c�L'���s0#�UKX.f�U�`<���YBK�=�|�79�N�/{�L$ ��v����#��kz��y���s�'�,�f\w'&�}r���k>ʮ`PK.s\?Y~�\[+python_serverless-1.0.3.4.1.dist-info/WHEEL�1
�0�]���2M(��[)���$#Yr���ۀ*_x�M3��J(��y��G��Ɨ���4
�6y6yuGݗ���)k�㼉�B��DPK.s\?=�<3python_serverless-1.0.3.4.1.dist-info/top_level.txtK)(,M-�L�/J�*N-*K-�I-.�PK.s\~���2
,python_serverless-1.0.3.4.1.dist-info/RECORD��7ڣh���M�V���
+���=������s�}x,�'����eW�a�3��TDN�����Y���E2k�����ē�γ�d(Y��Ӝ��~Т���h.�n:���V�'���sV ��}���
%
W,x��ߔ��)A��pJǵL����rQ3X�R��k-��Wj$�����'���"�����Os��t�(�]+<�s�TiRΩb��ݔ9�*=�%�Z�"�+��4L�2��9��pH!���FJ�:C�*_��w=�q�$��%��&���%}�0A�d���toy)���V�����qP��|Ԝ�(L}[�|�
c�_$P硄W��
��uZ�Ŕ.^�
�2]��'���ۦ��1z����0�V��VӺ�c����Ec0��LK�L��;,��K&RqF�����l���N��ը�egN� JM$N���~J�'{�q���q��TU�մ��=ș������>?Ph��#�j �O'��xS]Z�fO;#�(��Cm'-}��ډ!ʏ�m�����"�kWk��oJ#�q ��U�Jw�������0�|Zc?�I�<��U5�x�M��ʄ��m���P4��s)�e P��lc:-�1�b��°�T�<�ϗ�sJB�|j�<S�+�,��$���s4����ju��p�_������VߠDiR�g��Y A��� C$���������s��]�eӠȡ���T��%tz&�����Q��}G��o���3�"#�8|p�~k��xla��p���: �5;����'��M�vy٥�W�d�ly��#���/V|����^�����y���Q ���o��c�N�ﺸ�I8�A�O�<��M\F�q9!܅z@+)��<�<j�/NXb�����zE�Α~���<���`�z^��/�(M��wmi���-_��Z���(���R��t��d������;@���+���е�1�`̛�u�'��I���p797t���V�tԾKirp�3���LN�� �=�H�u��N�I6wj��Џ�m#t]��l�s��wFq�v��T�HA�� �-�Fx���g ����l���^�Q0Vħ�4��@�mv�1��볌��fO���KV�@0#!J]
�b�w�4U��<�٫н�����>���� ���M��!���)�b��
�i��G�_ݑajv�# m���>Dx�UF�%*�Cf�S�p�&�
A_��UE�(�$��Ue}�K�R(�eQq��u{��j�$�
� ��5�s�w��E��~�������]����6�16��s��H��%�R1N����O���鰠��{�l�+��ψ�y&,ʹ��x�vg���uI�c��v�V�����ᄹ�&]��g~��+��Vp��G#��&+���Nc
M��1ӄ�ů�@�?�d�'����PK.s\|�����dpquerycore/__init__.pyPK.s\H_k����Ldpquerycore/annotations.pyPK.s\"5Lyi��dpquerycore/api_service.pyPK.s\���J����dpquerycore/auth.pyPK.s\�
P��,M��4dpquerycore/base_client.pyPK.s\OXm�&��K&dpquerycore/conf.pyPK.s\�����l(dpquerycore/consts.pyPK.s\��ڻ����^+dpquerycore/enums.pyPK.s\�C��V���0dpquerycore/exceptions.pyPK.s\�m�������1dpquerycore/job.pyPK.s\�]8f����8dpquerycore/log.pyPK.s\�$��}N��W:dpquerycore/page.pyPK.s\������<dpquerycore/protocol.pyPK.s\��������@dpquerycore/result.pyPK.s\���j��)��Cdpquerycore/task.pyPK.s\�qX�����Idpquerycore/tos_auto.pyPK.s\�j�N S���Odpquerycore/utils.pyPK.s\����N���Udpquerycore/volcengine_auth.pyPK.s\G�O����Zserverless/__init__.pyPK.s\N��+]'<��!\serverless/api_service.pyPK.s\-��!���dserverless/auth.pyPK.s\�����-��eserverless/client.pyPK.s\�:Q�" ��0nserverless/enums.pyPK.s\b��W00���nserverless/exceptions.pyPK.s\�l�!!���nserverless/job.pyPK.s\�{A�(&��9oserverless/log.pyPK.s\�[h�&$���oserverless/protocol.pyPK.s\�w�w" ���oserverless/result.pyPK.s\p�?����>pserverless/task.pyPK.s\>����.���wpython_serverless-1.0.3.4.1.dist-info/METADATAPK.s\?Y~�\[+��:ypython_serverless-1.0.3.4.1.dist-info/WHEELPK.s\?=�<3���ypython_serverless-1.0.3.4.1.dist-info/top_level.txtPK.s\~���2
,��Izpython_serverless-1.0.3.4.1.dist-info/RECORDPK!! \�
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.EMR Agent交互指南
EMR Agent是EMR的AI助手。
- 当用户需要诊断Serverless作业、Serverless实例、EMR On Ecs(或者EMR On Vke)服务或集群的时候,请调用expert.py脚本
python ./scripts/emr_agent/expert.py --arg_key value- 当用户需要查询Agent报告、聊天记录(会话记录)的时候,应该使用emr_agent_manager.py脚本
python ./scripts/emr_agent/emr_agent_manager.py --arg_key value诊断功能指南
发送诊断请求
EMR Agent支持自然语言交互,请求参数包括: question:question中应该包含必要的信息,后面会讲到每种场景所需的必要信息 chat-id:EMR Agent是AI助手,具有会话功能。在发起诊断后,诊断结果中会包含chat-id字段,传入这个字段,可以就之前的话题与EMR Agent继续讨论。如果不传chat-id,则会发起新的会话。
# 注意,如果question有空格,应该用引号括起来
python ./scripts/emr_agent/expert.py --question "帮我诊断一下作业:325461534" [--chat-id session_6e6599ae-287f-4d33-b956-9284cb166ad2]获取诊断结果
expert生成结果需要一定时间。脚本执行后,你会看到进程的pid,通过以下命令取回结果
# 查询result的方法,参数为异步任务的pid
python ./scripts/emr_agent/expert.py --get-result {pid}注意:请仔细核对pid,不要使用错误的pid
作业诊断场景说明
作业分为两种,对于Serverless队列的作业来说,必要的信息是作业ID;对于Serverless实例(Serverless Olap)的SQL查询来说,必要的信息是查询ID和Serverless实例ID。示例
# 注意,如果question有空格,应该用引号括起来
python ./scripts/emr_agent/expert.py --question "帮我诊断一下作业:325461534"# 主要,实例ID和查询ID都是uuid的格式,你要原封不动地使用正确ID,不要编造ID
python ./scripts/emr_agent/expert.py --question "帮我诊断olap sql,Serverless实例ID:cdw-443qkdc56b48kcegjird-rd,查询ID:9c7fe664-fa84-11f0-aae7-00163e752688"集群诊断场景说明
集群分为两种,On Ecs集群和On VKE集群。诊断集群的必要信息包括:产品形态(On Ecs还是On Vke)和集群ID。请求示例如下:
python ./scripts/emr_agent/expert.py --question "帮我诊断一下EMR On Ecs的集群,集群ID为:emr-20c976f7cb93xxxxxx"服务诊断场景说明
服务诊断的必要信息包括:产品形态(On Ecs还是On Vke)、集群ID和服务名称(比如HDFS、YARN、Spark、Hive)。请求示例如下:
# 注意,有时候用户也把服务称为应用,比如“Spark应用”
python ./scripts/emr_agent/expert.py --question "帮我诊断一下EMR On Vke集群的Spark服务,集群ID为:emr-20c976f7cb93xxxxxx"Serverless实例诊断场景说明
Serverless实例指全托管的Serverless Doris和Serverless Starrocks。其诊断的必要信息是Serverless实例ID。请求示例
python ./scripts/emr_agent/expert.py --question "帮我诊断一下Serverless Doris实例,实例ID是:cdw-443qkdc56b48kcegjird"知识问答功能指南
EMR Agent专注于大数据领域和火山引擎EMR产品。当用户的问题涉及这些领域,而你的知识又不足以回答的时候,可以请求EMR Agent,示例如下:
python ./scripts/emr_agent/expert.py --question "Serverless EMR怎么创建队列呢"EMR Agent 会话和报告管理操作指南
会话和报告管理,需要调用emr_agent_manager.py,不同的场景,需要传入不同的action和body,调用示例如下
# 注意,body是转义后的json字符串,双引号括起来,否则命令行参数无法解析
python ./scripts/emr_agent/emr_agent_manager.py --action ListChats --body "{\"PageSize\": 10}"ListChats
接口描述 获取当前用户在EMR Agent中的会话列表,支持按作业ID、集群ID、服务名称等条件筛选。
Action: ListChats
body
| 参数名 | 参数类型 | 是否必选 | 说明 |
|---|---|---|---|
| JobId | String | 否 | 作业ID |
| ClusterId | String | 否 | 集群ID。服务诊断时需要 |
| ServiceName | String | 否 | 服务名称。服务诊断时需要 |
| PageNum | Integer | 否 | 页码 |
| PageSize | Integer | 否 | 页大小 |
GetChat
接口描述 获取会话的聊天记录
Action: GetChat
body
| 参数名 | 参数类型 | 是否必选 | 说明 |
|---|---|---|---|
| ChatId | String | 否 | 会话ID |
ListReports
接口描述 获取当前用户在EMR Agent中的诊断报告列表。
Action: ListReports
body
| 参数名 | 参数类型 | 是否必选 | 说明 |
|---|---|---|---|
| ChatId | String | 否 | 会话ID(格式为:session_6e6599ae-287f-4d33-b956-9284cb166ad2) |
| ReportType | String | 否 | 报告类型。可选值:cluster(集群诊断)、service(服务诊断)、job作业诊断 |
| PageNum | Integer | 否 | 页码 |
| PageSize | Integer | 否 | 页大小 |
GetReportResult
接口描述 获取EMR Agent中诊断报告的详情。
Action: GetReportResult
body
| 参数名 | 参数类型 | 是否必选 | 说明 |
|---|---|---|---|
| ReportId | String | 否 | 报告ID(格式为:emr-report-8f0fc069-0bf0-44d3-959b-329f6c73328f) |
Requirements
- 不要去读脚本内容,按照格式执行即可
- expert.py执行较慢,建议轮询间隔不要小于1分钟,查询时,请仔细核对pid,不要填错
- 尽量不要创建临时文件,通过bash命令去执行。例如:
- python ./scripts/emr_agent/expert.py --question "帮我诊断一下作业:325461534"
- python ./scripts/emr_agent/emr_agent_manager.py --action ListChats --body "{\"PageSize\": 10}"
EMR on ECS 应用配置管理操作指南
概述
EMR on ECS 提供半托管的 ECS 形态大数据服务,主要面向集群的应用配置项列表、集群配置文件列表、配置项修改历史列表、修改配置项等管理。
说明
本文档提供 EMR on ECS 中 应用配置管理 相关的 OpenAPI。
OpenAPI 调用方式
- API Version 统一为 2023-08-15
- Service: emr
核心调用方法
所有 EMR on ECS 应用配置管理操作均通过下列脚本实现
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action <Action> \
--method <POST> \
--query '<json>' \
--body '<json>'应用配置管理操作
1. 应用配置文件列表查询
接口描述 调用 ListApplicationConfigFiles,查看一个 E-MapReduce(EMR)集群中的应用配置文件。
使用场景 查询指定集群下某个应用的所有配置文件信息。
请求方式 请求方式: POST Action: ListApplicationConfigFiles
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | ListApplicationConfigFiles | 要执行的操作,取值:ListApplicationConfigFiles |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ApplicationName | String | 是 | HDFS | 应用名称 |
| MaxResults | Integer | 否 | 10 | 返回的最大记录数,默认10,最大100 |
| NextToken | String | 否 | xxx | 分页查询的下一页token |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action ListApplicationConfigFiles \
--method POST \
--query '{"Action":"ListApplicationConfigFiles","Version":"2023-08-15"}' \
--body '{"ClusterId":"emr-xxx","ApplicationName":"HDFS"}'请求示例
{
"ClusterId":"emr-xxx",
"ApplicationName": "HDFS"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Items | Array of Object | -- | 应用配置文件列表 |
| MaxResults | Integer | 10 | 单次查询可返回的最大记录数 |
| NextToken | String | TfhvaePXZl2eNA6K58wUIw== | 分页查询的下一页token |
| TotalCount | Integer | 383 | 总记录数 |
Items 对象结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ApplicationName | String | HDFS | 应用名称 |
| FileName | String | core-site.xml | 配置文件名 |
| FilePath | String | /etc/emr/hadoop/conf | 配置文件路径 |
| FileMode | String | null | 文件权限模式 |
| FileUser | String | hdfs | 文件所属用户 |
| FileGroup | String | hadoop | 文件所属用户组 |
| SupportCustomConfigItem | Boolean | null | 是否支持自定义配置项 |
| Description | String | null | 配置文件描述 |
返回示例
{
"ResponseMetadata": {
"RequestId": "20231204150314DDAD5A0C4767xxx",
"Action": "ListApplicationConfigFiles",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"Items": [
{
"ApplicationName": "HDFS",
"FileName": "core-site.xml",
"FilePath": "/etc/emr/hadoop/conf",
"FileMode": null,
"FileUser": "hdfs",
"FileGroup": "hadoop",
"SupportCustomConfigItem": null,
"Description": null
},
{
"ApplicationName": "HDFS",
"FileName": "hadoop-env.sh",
"FilePath": "/etc/emr/hadoop/conf",
"FileMode": null,
"FileUser": "hdfs",
"FileGroup": "hadoop",
"SupportCustomConfigItem": null,
"Description": null
}
],
"TotalCount": 9,
"MaxResults": 10,
"NextToken": null
}
}2. 配置项列表
接口描述 调用 ListApplicationConfigs,获取 E-MapReduce(EMR)集群应用配置列表信息。
使用场景 查询指定集群下某个应用的所有配置项信息。
请求方式: POST Action: ListApplicationConfigs
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | ListApplicationConfigs | 要执行的操作,取值:ListApplicationConfigs |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ApplicationName | String | 是 | HDFS | 应用名称 |
| ConfigFileName | String | 否 | hdfs-site.xml | 配置文件名称 |
| ConfigItemKey | String | 否 | dfs.http.policy | 配置项键名 |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action ListApplicationConfigs \
--version 2023-08-15 \
--method POST \
--query '{"Action":"ListApplicationConfigs","Version":"2023-08-15"}' \
--body '{"ClusterId":"emr-xxx","ApplicationName":"HDFS"}'请求示例
{
"ClusterId":"emr-xxx",
"ApplicationName": "HDFS"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Items | Array of Object | -- | 应用配置详情列表 |
| MaxResults | Integer | 10 | 单次查询可返回的最大记录数 |
| NextToken | String | TfhvaePXZl2eNA6K58wUIw== | 分页查询的下一页token |
| TotalCount | Integer | 383 | 总记录数 |
Items 对象结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ApplicationName | String | HDFS | 应用名称 |
| ConfigFileName | String | hdfs-site.xml | 配置文件名称 |
| ConfigItemKey | String | dfs.http.policy | 配置项键名 |
| PresetConfigItemValue | String | HTTPS_ONLY | 预设配置项值 |
| ConfigItemValue | String | HTTPS_ONLY | 当前配置项值 |
| Applied | Boolean | false | 是否已应用 |
| Customized | Boolean | false | 是否自定义配置 |
| ConfigVersion | String | null | 配置版本 |
| OperatorId | String | null | 操作人ID |
| Description | String | "" | 配置项描述 |
| Remark | String | null | 备注信息 |
| EffectiveScope | Object | -- | 生效范围配置 |
| UpdateTime | String | null | 更新时间 |
EffectiveScope 对象结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| EffectiveType | String | COMPONENT_NAME | 生效类型 |
| NodeGroupIds | Array | null | 节点组ID列表 |
| NodeGroupNames | Array | null | 节点组名称列表 |
| NodeGroupTypes | Array | null | 节点组类型列表 |
| NodeNames | Array | null | 节点名称列表 |
| NodeIds | Array | null | 节点ID列表 |
| ComponentNames | Array | ["DATANODE"] | 组件名称列表 |
返回示例
{
"ResponseMetadata": {
"RequestId": "20231205140549749823963EB28xxx",
"Action": "ListApplicationConfigs",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"Items": [
{
"ApplicationName": "HDFS",
"ConfigFileName": "hdfs-site.xml",
"ConfigItemKey": "dfs.http.policy",
"PresetConfigItemValue": "HTTPS_ONLY",
"ConfigItemValue": "HTTPS_ONLY",
"Applied": false,
"Customized": false,
"ConfigVersion": null,
"OperatorId": null,
"Description": "",
"Remark": null,
"EffectiveScope": {
"EffectiveType": "COMPONENT_NAME",
"NodeGroupIds": null,
"NodeGroupNames": null,
"NodeGroupTypes": null,
"NodeNames": null,
"NodeIds": null,
"ComponentNames": [
"DATANODE"
]
},
"UpdateTime": null
},
{
"ApplicationName": "HDFS",
"ConfigFileName": "hdfs-site.xml",
"ConfigItemKey": "dfs.datanode.data.dir",
"PresetConfigItemValue": "/data01/hadoop/hdfs/datanode",
"ConfigItemValue": "/data01/hadoop/hdfs/datanode",
"Applied": false,
"Customized": false,
"ConfigVersion": null,
"OperatorId": null,
"Description": "",
"Remark": null,
"EffectiveScope": {
"EffectiveType": "COMPONENT_NAME",
"NodeGroupIds": null,
"NodeGroupNames": null,
"NodeGroupTypes": null,
"NodeNames": null,
"NodeIds": null,
"ComponentNames": [
"*"
]
},
"UpdateTime": null
}
],
"TotalCount": 383,
"MaxResults": 10,
"NextToken": "xxx"
}
}3. 获取集群配置文件信息详情
接口描述 调用 GetApplicationConfigFile,获取一个 E-MapReduce(EMR)集群的应用配置文件。
使用场景 查询指定集群下某个应用的特定配置文件内容。
请求方式: POST Action: GetApplicationConfigFile
注意事项
- 已拥有火山引擎账号并开通 EMR 权限
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | GetApplicationConfigFile | 要执行的操作,取值:GetApplicationConfigFile |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ApplicationName | String | 是 | HDFS | 应用名称 |
| ConfigFileName | String | 是 | core-site.xml | 应用的配置文件名 |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action GetApplicationConfigFile \
--version 2023-08-15 \
--method POST \
--query '{"Action":"GetApplicationConfigFile","Version":"2023-08-15"}' \
--body '{"ClusterId":"emr-xxx","ApplicationName":"HDFS","ConfigFileName":"core-site.xml"}'请求参数示例
{
"ClusterId":"emr-xxx",
"ApplicationName": "HDFS",
"ConfigFileName":"core-site.xml"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ApplicationName | String | HDFS | 应用名称 |
| FileName | String | core-site.xml | 配置文件名称 |
| FilePath | String | /etc/emr/hadoop/conf | 配置文件路径 |
| FileContent | String | <?xml version="1.0" encoding="UTF-8"?>... | 配置文件内容 |
| FileUser | String | hdfs | 配置文件的权限:user |
| FileGroup | String | hadoop | 配置文件的权限:group |
| SupportCustomConfigItem | Boolean | xxx | 配置文件是否允许设置自定义参数 |
| Description | String | xxx | 配置文件的描述信息 |
返回参数示例
{
"ResponseMetadata": {
"RequestId": "20231204171503C7664BD9E36Axxx",
"Action": "GetApplicationConfigFile",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"ApplicationName": "HDFS",
"FileName": "core-site.xml",
"FilePath": "/etc/emr/hadoop/conf",
"FileMode": null,
"FileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-stylesheet type=\"text/xsl\" href=\"configuration.xsl\"?>\n<configuration>...",
"FileUser": "hdfs",
"FileGroup": "hadoop",
"SupportCustomConfigItem": null,
"Description": null
}
}4. 配置项修改历史列表
接口描述 调用 ListApplicationConfigHistories,获取一个 E-MapReduce(EMR)集群应用配置修改历史列表。
使用场景 查询指定集群下某个应用的配置项修改历史记录。
请求方式: POST Action: ListApplicationConfigHistories
注意事项
- 已拥有火山引擎账号并开通 EMR 权限
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | ListApplicationConfigHistories | 要执行的操作,取值:ListApplicationConfigHistories |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ApplicationName | String | 是 | HDFS | 应用名称 |
| ConfigFileName | String | 否 | core-site.xml | 配置文件名称 |
| ConfigItemKey | String | 否 | 222 | 配置项的key,模糊查询 |
| ConfigVersion | String | 否 | 249850 | 配置版本 |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action ListApplicationConfigHistories \
--version 2023-08-15 \
--method POST \
--query '{"Action":"ListApplicationConfigHistories","Version":"2023-08-15"}' \
--body '{"ClusterId":"emr-xxx","ApplicationName":"HDFS"}'请求示例
{
"ClusterId":"emr-xxx",
"ApplicationName": "HDFS"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Items | Array of Object | -- | 应用配置历史列表 |
| MaxResults | Integer | 10 | 单次查询可返回的最大记录数 |
| NextToken | String | xxx | 分页查询的下一页token |
| TotalCount | Integer | 383 | 总记录数 |
Items 对象结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ApplicationName | String | HDFS | 应用名称 |
| ConfigFileName | String | core-site.xml | 配置文件名称 |
| ConfigItemKey | String | 222 | 配置项键名 |
| BeforeConfigItemValue | String | null | 修改前的配置项值 |
| ConfigItemValue | String | 211231 | 修改后的配置项值 |
| Applied | Boolean | false | 是否已应用 |
| Customized | Boolean | true | 是否自定义配置 |
| ConfigVersion | String | 249850 | 配置版本 |
| OperatorId | String | null | 操作人ID |
| Description | String | null | 配置项描述 |
| Remark | String | 1 | 备注信息 |
| EffectiveScope | Object | -- | 生效范围配置 |
| UpdateTime | Integer | 1701589263752 | 更新时间(时间戳) |
EffectiveScope 对象结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| EffectiveType | String | COMPONENT_NAME | 生效类型 |
| NodeGroupIds | Array | null | 节点组ID列表 |
| NodeGroupNames | Array | null | 节点组名称列表 |
| NodeGroupTypes | Array | null | 节点组类型列表 |
| NodeNames | Array | null | 节点名称列表 |
| NodeIds | Array | null | 节点ID列表 |
| ComponentNames | Array | ["*"] | 组件名称列表 |
返回参数示例
{
"ResponseMetadata": {
"RequestId": "202312041421318F52F2BA7B8xxx",
"Action": "ListApplicationConfigHistories",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"Items": [
{
"ApplicationName": "HDFS",
"ConfigFileName": "core-site.xml",
"ConfigItemKey": "222",
"BeforeConfigItemValue": null,
"ConfigItemValue": "211231",
"Applied": false,
"Customized": true,
"ConfigVersion": "249850",
"OperatorId": null,
"Description": null,
"Remark": "1",
"EffectiveScope": {
"EffectiveType": "COMPONENT_NAME",
"NodeGroupIds": null,
"NodeGroupNames": null,
"NodeGroupTypes": null,
"NodeNames": null,
"NodeIds": null,
"ComponentNames": [
"*"
]
},
"UpdateTime": 1701589263752
},
{
"ApplicationName": "HDFS",
"ConfigFileName": "core-site.xml",
"ConfigItemKey": "s111",
"BeforeConfigItemValue": null,
"ConfigItemValue": "111",
"Applied": false,
"Customized": true,
"ConfigVersion": "249850",
"OperatorId": null,
"Description": null,
"Remark": "1",
"EffectiveScope": {
"EffectiveType": "COMPONENT_NAME",
"NodeGroupIds": null,
"NodeGroupNames": null,
"NodeGroupTypes": null,
"NodeNames": null,
"NodeIds": null,
"ComponentNames": [
"*"
]
},
"UpdateTime": 1701589263752
},
{
"ApplicationName": "HDFS",
"ConfigFileName": "hdfs-site.xml",
"ConfigItemKey": "dfs.client.block.write.replace-datanode-on-failure.enable",
"BeforeConfigItemValue": "true",
"ConfigItemValue": "false",
"Applied": false,
"Customized": false,
"ConfigVersion": "249644",
"OperatorId": null,
"Description": "\n",
"Remark": null,
"EffectiveScope": {
"EffectiveType": "COMPONENT_NAME",
"NodeGroupIds": null,
"NodeGroupNames": null,
"NodeGroupTypes": null,
"NodeNames": null,
"NodeIds": null,
"ComponentNames": [
"*"
]
},
"UpdateTime": 1701587925163
}
],
"TotalCount": 3,
"MaxResults": 10,
"NextToken": "xxx"
}
}5. 更新配置项
接口描述 调用 UpdateApplicationConfig,更新 E-MapReduce(EMR)集群的应用配置。
使用场景 修改指定集群下某个应用的配置项值。
请求方式 请求方式: POST Action: UpdateApplicationConfig
注意事项
- 已拥有火山引擎账号并开通 EMR 权限
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | UpdateApplicationConfig | 要执行的操作,取值:UpdateApplicationConfig |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ApplicationName | String | 是 | HDFS | 服务名称 |
| Remark | String | 是 | 测试 | 操作备注 |
| Configs | Array of Object | 是 | [{"ConfigFileName":"hdfs-site.xml","ConfigItemKey":"dfs.blockreport.initialDelay","ConfigItemValue":2}] | 需要修改的配置项 |
| ClientToken | String | 否 | xxx | 调用方生成的唯一标识这次请求的标识,用来保证幂等 |
Configs 对象结构
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| ConfigFileName | String | 是 | hdfs-site.xml | 配置文件名称 |
| ConfigItemKey | String | 是 | dfs.blockreport.initialDelay | 配置项键名 |
| ConfigItemValue | String | 是 | 2 | 配置项值 |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action UpdateApplicationConfig \
--version 2023-08-15 \
--method POST \
--query '{"Action":"UpdateApplicationConfig","Version":"2023-08-15"}' \
--body '{"ClusterId":"emr-xxx","ApplicationName":"HDFS","Configs":[{"ConfigFileName":"hdfs-site.xml","ConfigItemKey":"dfs.blockreport.initialDelay","ConfigItemValue":"2"}],"Remark":"测试"}'请求示例
{
"ClusterId":"emr-xxx",
"ApplicationName": "HDFS",
"Configs":[{
"ConfigFileName":"hdfs-site.xml",
"ConfigItemKey":"dfs.blockreport.initialDelay",
"ConfigItemValue":"2"
}],
"Remark":"刘斌测试"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ClusterId | String | emr-xxx | 集群ID |
| OperateId | String | 73xxx | 集群操作ID |
| ResultData | Object | -- | 结果数据 |
返回示例
{
"ResponseMetadata": {
"RequestId": "202312042119240BF2149851287xxx",
"Action": "UpdateApplicationConfig",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"OperateId": "xxx",
"ClusterId": "emr-xxx",
"ResultData": null
}
}EMR on ECS 集群管理操作指南
概述
EMR on ECS 提供半托管的 ECS 形态大数据服务,主要面向集群的集群列表、集群详情查询、更新集群属性等管理。
说明
本文档提供 EMR on ECS 中 集群 相关的 OpenAPI。
OpenAPI 调用方式
- API Version 统一为 2023-08-15
- Service: emr
核心调用方法
所有 EMR on ECS 集群管理操作均通过下列脚本实现
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action <Action> \
--version 2023-08-15 \
--method <POST> \
--query '<json>' \
--body '<json>'集群管理操作
1. 集群列表查询
接口描述 调用 ListClusters,查询该账号下所有 E-MapReduce(EMR)集群。
请求方式: POST Action: ListClusters
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | ListClusters | 要执行的操作,取值:ListClusters |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterName | String | 否 | OpenApiHadoop3.7.0-xxx | 集群名称,模糊查询 |
| ClusterId | String | 否 | emr-xxx | 集群ID,模糊查询 |
| ReleaseVersion | String | 否 | 3.7.0 | 集群版本 |
| ProjectName | String | 否 | default | 项目名称 |
| CreateTimeBefore | String | 否 | 1701764286000 | 开始日期,时间戳单位ms |
| CreateTimeAfter | String | 否 | 1701764286300 | 结束日期,时间戳单位ms |
| ClusterIds | Array of String | 否 | ["emr-xxx"] | 集群ID列表 |
| ClusterTypes | Array of String | 否 | ["Hadoop"] | 集群类型列表 |
| ClusterStates | Array of String | 否 | ["RUNNING"] | 集群状态列表 |
| ChargeTypes | Array of String | 否 | ["POST"] | 集群付费类型列表 |
| Tags | Array of Tag | 否 | xxx | 标签列表 |
| MaxResults | Integer | 否 | 10 | 返回的最大记录数 |
| NextToken | String | 否 | 57N8YtDWxxx | 分页查询的下一页token |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action ListClusters \
--version 2023-08-15 \
--method POST \
--query '{}' \
--body '{
"ClusterStates": [
"CREATING",
"FAILED",
"TERMINATED_WITH_ERROR",
"RUNNING",
"EXCEPTION",
"WARNING",
"PAUSED",
"PAUSING",
"RESTORING",
"SHUTDOWN",
"TERMINATING",
"PENDING_FOR_PAYMENT"
],
"MaxResults": 20
}'请求参数示例
{
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| RegionId | String | cn-beijing | 地域ID |
| ProjectName | String | default | 项目名称 |
| ClusterId | String | emr-xxx | 集群ID |
| ClusterName | String | OpenApiHadoop3.7.0-xxx | 集群名称 |
| ClusterType | String | Hadoop | 集群类型 |
| ReleaseVersion | String | 3.7.0 | 集群版本 |
| SecurityGroupId | String | sg-xxx | 集群全局安全组ID |
| VpcId | String | vpc-xxx | 私有网络 |
| Creator | String | 6xxx | 创建者 |
| AccountId | String | 210xxx | 账号ID |
| NodeAttribute | NodeAttribute | {"ZoneId":"cn-beijing-b","EcsIamRole":"VEECSforEMRRole"} | 集群的全局节点属性 |
| ClusterState | String | RUNNING | 集群状态,可选值:PENDING_FOR_PAYMENT,CREATING,RUNNING,TERMINATING,TERMINATED,TERMINATED_WITH_ERROR,FAILED,SHUTDOWN |
| ChargeType | String | POST | 付费类型,可选值:PRE(包年包月)、POST(按量付费) |
| CreateTime | Long | 1701764286214 | 创建时间,单位ms |
| ReadyTime | Long | 1701764779378 | 集群创建完成时间,单位ms |
| ExpireTime | Long | 1701764286214 | 集群过期时间,单位ms |
| TerminateTime | Long | 1701764286214 | 集群终止时间,单位ms |
| StateChangeReason | StateChangeReason | null | 状态变更原因 |
- NodeAttribute
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ZoneId | String | cn-beijing-b | 可用区ID(NodeAttribute的子字段) |
| EcsIamRole | String | VEECSforEMRRole | ECS上绑定的IAM Role名称(NodeAttribute的子字段) |
- StateChangeReason
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| code | String | 状态更新码(StateChangeReason的子字段) | |
| reason | String | 状态更新的原因详情(StateChangeReason的子字段) |
返回示例
{
"ResponseMetadata": {
"RequestId": "20231205174720B3E08B8D2FB8E9xxx",
"Action": "ListClusters",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"Items": [
{
"RegionId": "cn-beijing",
"ProjectName": "default",
"ClusterId": "emr-xxx",
"ClusterName": "OpenApiHadoop3.7.0-xxx",
"ClusterType": "Hadoop",
"ReleaseVersion": "3.7.0",
"SecurityGroupId": "sg-xxx",
"VpcId": "xxx",
"Creator": "6xxx",
"AccountId": 2100xxx,
"NodeAttribute": {
"ZoneId": "cn-beijing-b",
"EcsIamRole": "VEECSforEMRRole",
"LoginUserName": null
},
"ClusterState": "RUNNING",
"ChargeType": "POST",
"CreateTime": 1701764286214,
"ReadyTime": 1701764779378,
"ExpireTime": null,
"TerminateTime": null,
"StateChangeReason": null
}
],
"TotalCount": 1,
"MaxResults": 10,
"NextToken": "xxx"
}
}2. 获取集群详情
接口描述 调用 GetCluster,查询该账号下 E-MapReduce(EMR)集群详情。
请求方式: POST Action: GetCluster
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | GetCluster | 要执行的操作,取值:GetCluster |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action GetCluster \
--version 2023-08-15 \
--method POST \
--query '{}' \
--body '{"ClusterId":"emr-xxx"}'请求参数示例
{
"ClusterId":"emr-xxx"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Tags | Array of Tag | [{"Key":"volc:emr:create_by","Value":"EMR"},{"Key":"volc:emr:emr_cluster_type","Value":"Hadoop"},{"Key":"volc:emr:location","Value":"cn-beijing/cn-beijing-b"}] | 标签列表 |
| RegionId | String | cn-beijing | 地域ID |
| ProjectName | String | default | 项目名称 |
| ClusterId | String | emr-xxx | 集群ID |
| ClusterName | String | OpenApiHadoop3.7.0-xxx | 集群名称 |
| ClusterType | String | Hadoop | 集群类型 |
| ReleaseVersion | String | 3.7.0 | 集群版本 |
| SecurityGroupId | String | sg-xxx | 集群全局安全组ID |
| VpcId | String | vpc-xxx | 集群vpcId |
| NodeAttribute | NodeAttribute | {"ZoneId":"cn-beijing-b","EcsIamRole":"VEECSforEMRRole"} | 集群全局的节点信息 |
| ClusterDomainNames | Array of String | ["emr-xxx.offline-cn-beijing.emr-volces.com","offline-cn-beijing.emr-volces.com"] | 集群DNS域名后缀 |
| AccountId | Long | 2100xxx | 账号ID |
| CreatorId | Long | 6xxx | 创建者ID |
| CreatorName | String | xxx | 创建者名称 |
| Autorenew | Boolean | false | 是否自动续费 |
| AutorenewPeriod | Integer | 1 | 自动续费周期 |
| AutorenewPeriodUnit | String | Week,Month,Year | 自动续费周期单位 |
| ClusterState | String | RUNNING | 集群状态,可选值:PENDING_FOR_PAYMENT,CREATING,RUNNING,TERMINATING,TERMINATED,TERMINATED_WITH_ERROR,FAILED,SHUTDOWN |
| ChargeType | String | POST | 付费类型,可选值:PRE(包年包月)、POST(按量付费) |
| DeployMode | String | HA | 集群部署模式,可选值:NORMAL,HA |
| SecurityMode | String | NORMAL | 安全模式,可选值:NORMAL,KERBEROS |
| CreateTime | Long | 1703437906000 | 集群创建时间 |
| ReadyTime | Long | 1703437906000 | 集群创建完成时间 |
| ExpireTime | Long | 1703437906000 | 集群过期时间 |
| TerminateTime | Long | 1703437906000 | 集群终止时间 |
| StateChangeReason | StateChangeReason | xxx | 状态变更原因 |
返回示例
{
"ResponseMetadata": {
"RequestId": "20231205194333E4CF0C48565Cxxx",
"Action": "GetCluster",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"RegionId": "cn-beijing",
"ProjectName": "default",
"ClusterId": "emr-xxx",
"ClusterName": "OpenApiHadoop3.7.0-xxx",
"ClusterType": "Hadoop",
"ReleaseVersion": "3.7.0",
"SecurityGroupId": "sg-xxx",
"VpcId": "vpc-xxx",
"NodeAttribute": {
"ZoneId": "cn-beijing-b",
"EcsIamRole": "VEECSforEMRRole",
"LoginUserName": null
},
"ClusterDomainNames": [
"emr-xxx.offline-cn-beijing.emr-volces.com",
"offline-cn-beijing.emr-volces.com"
],
"AccountId": 210xxx,
"CreatorId": 64xxx,
"CreatorName": null,
"Autorenew": false,
"AutorenewPeriod": 1,
"AutorenewPeriodUnit": null,
"ClusterState": "RUNNING",
"ChargeType": "POST",
"DeployMode": "HIGH_AVAILABLE",
"SecurityMode": "SIMPLE",
"CreateTime": 1701764286214,
"ReadyTime": 1701770482932,
"ExpireTime": null,
"TerminateTime": null,
"Tags": null,
"StateChangeReason": null
}
}3. 更新集群属性
接口描述 调用UpdateClusterAttribute,更新指定账号和 E-MapReduce(EMR)集群的属性,如集群名称。
请求方式: POST Action: UpdateClusterAttribute
请求参数 下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
| 参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | UpdateClusterAttribute | 要执行的操作,取值:UpdateClusterAttribute |
| Version | String | 是 | 2023-08-15 | API的版本,取值:2023-08-15 |
| ClusterId | String | 是 | emr-xxx | 集群ID |
| ClusterName | String | 是 | emr-test-xxx | 集群名称 |
| ClientToken | String | 否 | xxx | 调用方生成的唯一标识这次请求的标识,用来保证幂等 |
调用示例
python ./scripts/on_ecs/emr_on_ecs_cli.py \
--action UpdateClusterAttribute \
--version 2023-08-15 \
--method POST \
--query '{}' \
--body '{"ClusterId":"emr-xxx","ClusterName":"emr-openapi测试V1"}'请求参数示例
{
"ClusterId":"emr-xxx",
"ClusterName":"emr-openapi测试V1"
}返回参数 下表仅列出本接口特有的返回参数。更多信息请参见返回结构
| 参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ClusterId | String | xxx | 集群ID |
| OperationId | String | emr-xxx | 集群操作ID |
返回示例
{
"ResponseMetadata": {
"RequestId": "202312042119240BF214985128722xxx",
"Action": "UpdateClusterAttribute",
"Version": "2023-08-15",
"Service": "emr",
"Region": "cn-beijing",
"Error": null,
"Deprecated": false
},
"Result": {
"OperateId": "xxx",
"ClusterId": "emr-xxx",
"ResultData": null
}
}#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ASSETS_DIR="$SCRIPT_DIR/../../assets"
pip install $ASSETS_DIR/libs/python_serverless-1.0.3.4.1-py3-none-any.whl