全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
批量计算

SDK的使用说明

更新时间:2017-06-07 13:26:11

1. 使用举例

您必须替换代码中的image_idaccess_key_idaccess_key_secret等用户信息以及oss相关的路径。

  1. import time
  2. from batchcompute import Cient, ClientError
  3. from batchcompute import CN_SHENZHEN as REGION
  4. from batchcompute.resources import (
  5. JobDescription, TaskDescription, DAG,
  6. GroupDescription, ClusterDescription,
  7. )
  8. # some other codes here
  9. access_key_id = ... # your access key id
  10. access_key_secret = ... # your access key secret
  11. image_id = ... # the id of a image created before
  12. instance_type = ... # instance type
  13. client = Client(REGION, access_key_id, access_key_secret)
  14. try:
  15. # Create cluster.
  16. cluster_desc = ClusterDescription()
  17. group_desc = GroupDescription()
  18. group_desc.DesiredVMCount = 1
  19. group_desc.InstanceType = instance_type
  20. cluster_desc.add_group('group1', group_desc)
  21. cluster_desc.Name = "BatchcomputeCluster"
  22. cluster_desc.ImageId = image_id
  23. cluster_desc.Description = "Python SDK test"
  24. cluster_id = client.create_cluster(cluster_desc).Id
  25. # Create job.
  26. job_desc = JobDescription()
  27. echo_task = TaskDescription()
  28. # Create map task.
  29. echo_task.Parameters.Command.CommandLine = "echo Batchcompute service"
  30. echo_task.Parameters.Command.PackagePath = ""
  31. echo_task.Parameters.StdoutRedirectPath = "oss://xxx/xxx/" # Better replace this path
  32. echo_task.Parameters.StderrRedirectPath = "oss://xxx/xxx/" # Better replace this path
  33. echo_task.InstanceCount = 3
  34. echo_task.ClusterId = cluster_id
  35. # Create task dag.
  36. task_dag = DAG()
  37. task_dag.add_task(task_name="Echo", task=echo_task)
  38. # Create job description.
  39. job_desc.DAG = task_dag
  40. job_desc.Priority = 99 # 0-1000
  41. job_desc.Name = "PythonSDKDemo"
  42. job_desc.JobFailOnInstanceFail = True
  43. job_id = client.create_job(job_desc).Id
  44. # Wait for job finished.
  45. errs = client.poll(job_id)
  46. if errs: print ("Some errors occur: %s" % '\n'.join(errs))
  47. # Delete cluster
  48. client.delete_cluster(cluster_id)
  49. except ClientError, e:
  50. print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg())

2、 类和常量

2.1 接口类型

接口类型提供了BatchCompute服务所有API接口的Python实现以及其他一些有用的辅助接口。

序号 名称 可序列化 描述
1. Client No 与BatchCompute服务交互的客户端类型

2.2 描述类型

描述类型主要作为创建资源时的参数类型或获取资源状态信息时由服务的返回类型。

序号 名称 可序列化 描述
1. JobDescription Yes 描述用户作业的类
2. DAG Yes 描述作业任务以及任务间互相之间依赖关系的类
3. TaskDescription Yes 描述任务的类
4. Parameters Yes 描述任务运行参数的类
5. Command Yes 配置任务命令行执行环境类
6. ClusterDescription Yes 描述用户集群的类
7. GroupDescription Yes 描述用户集群实例配置的类
8. Job Yes 描述给定作业当前状态信息的类
9. Task Yes 描述给定的作业任务的当前状态信息的类
10. Instance Yes 描述给定的任务实例当前状态信息的类
11. Result Yes 描述给定的任务实例运行结果的类
12. InstanceMetrics Yes 描述给定作业或任务实例统计信息的类
13. TaskMetrics Yes 描述给定作业中任务统计信息的类
14. Cluster Yes 描述给定集群状态信息的类
15. Group Yes 描述给定集群中机器组状态信息的类
16. Metrics Yes 描述给定集群作业统计信息的类

关于可序列化

描述类型均为可序列化的类型,SDK中所有可序列化的类均从内部类型 Jsonizable 继承而来。以下是关于 Jsonizable 类型及其子类的描述;

参数说明:

Jsonizable 及其子类对象均可通过字典,Jsonizable 对象或者描述字典的JSON串初始化。注意,在初始化 Jsonizable 对象及其子类时,会丢弃字典或者JSON串中所有不合法的属性描述信息。

参数 类型 描述
properties dict, str, Jsonizable object 属性描述信息
  • 通过字典初始化 Jsonizable 类:

e.g.

  1. from batchcompute.resources import JobDescription
  2. # A dict object.
  3. properties = {
  4. "Name": "PythonSDKDemo",
  5. "Description": "Batchcompute"
  6. }
  7. jsonizable = JobDescription(properties)
  8. print (jsonizable.Name)
  9. print (jsonizable.Description)
  • 通过JSON字符串初始化 Jsonizable

e.g.

  1. from batchcompute.resources import JobDescription
  2. # A string jsonized from a dict object.
  3. properties = '''{
  4. "Name": "PythonSDKDemo",
  5. "Description": "Batchcompute"
  6. }'''
  7. jsonizable = JobDescription(properties)
  8. print (jsonizable.Name)
  9. print (jsonizable.Description)
  • 通过相同类的对象初始化 Jsonizable 类。

e.g.

  1. form batchcompute.resources import JobDescription
  2. # A JobDescription object.
  3. jsonizable1 = JobDescription()
  4. jsonizable1.Name = "PythonSDKDemo"
  5. jsonizable1.Description = "Batchcompute"
  6. jsonizable2 = JobDescription(jsonizable1)
  7. print(jsonizable2.Name)
  8. print(jsonizable2.Description)

方法说明:

序号 方法名 描述
1. update 接受一个字典对象,更新类的部分属性,不合法的属性将被丢弃
2. detail 返回一个包含类属性的字典,如果属性为空将不被包含
3. load 接受一个字符串,该字符串是一个JSON化的字典,类的属性均被更新,不合法的属性会被丢弃
4. dump 返回一个字符串,内容JSON化的字典,包含所有类属性信息,如果属性为空将不被包含
5. __str__ 被print调用的内置函数,其内部调用了dump函数

关于类属性

可序列化的类型均具有各种属性。属性均可以通过其名称直接读取,例如,你可以通过如下代码获取作业的ID:另外属性名与Python规范PEP8中类的命名方式保持一致(区别于类方法的命名规则),遵循CamelCase的拼写规则.

  1. # job is a Job object.
  2. job = ...
  3. job_id = job.Id
  4. print (job_id)
  • 另外,可以通过字典取值的方式获取属性,例如:
  1. # job is a Job object.
  2. job = ...
  3. job_id = job["Id"]
  4. print (job_id)
  • 对于类 JobDescription, DAG, TaskDescription, 可以通过赋值的方式更改某个属性的值,例如:
  1. from batchcompute.resources import JobDescription
  2. job_desc = JobDescription()
  3. job_desc.Name = "PythonSDKDemo"
  • 对于类 JobDescription, DAG, TaskDescription, 可以通过字典的方式对类的属性进行赋值, 例如:
  1. from batchcompute.resources import JobDescription
  2. job_desc = JobDescription()
  3. job_desc["Id"] = "PythonSDKDemo"

2.3 响应类型

序号 名称 可序列化 描述
1. CreateResponse No 创建资源成功后, Client返回的响应类
2. GetResponse No 获取资源状态信息, Client返回的响应类
3. ActionResponse No 对资源进行各种操作时由Client返回的响应类
4. ListResponse No 列举资源时,由Client返回的响应类

关于响应类

所有的响应类型 (CreateResponse, GetResponse, ActionRespnse, ListResponse)均继承自内部类型RawResponse.以下描述适用于所有RawResponse的子类。

属性说明:

属性 类型 描述
RequestId str Client的所有请求的识别码
StatusCode int Client的所有请求的状态码

e.g.

  1. ...
  2. response = client.create_job(job_desc)
  3. print (response.RequestId)
  4. print (response.StatusCode)

2.4 异常类型

非法的参数或者非法请求时会抛出异常

序号 名称 可序列化 描述
1. ClientError No 异常类
2. FieldError No 异常类
3. ValidationError No 异常类
4. JSONError No 异常类
5. ConfigError No 异常类

2.5 常量

序号 名称 可序列化 描述
1. CN_QINGDAO No 常量,BatchCompute的青岛(华北1)endpoint
2. CN_SHENZHEN No 常量,BatchCompute的深圳(华南1)endpoint
3. CN_BEIJING No 常量,BatchCompute的北京(华北2)endpoint
4. CN_HANGZHOU No 常量,BatchCompute的杭州(华东1)endpoint
本文导读目录