閱讀555 返回首頁    go 財經資訊


SDK的使用說明__Python版SDK_批量計算-阿裏雲

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

最後更新:2016-11-23 17:16:09

  上一篇:go 相關下載與安裝__Java版SDK_批量計算-阿裏雲
  下一篇:go Client類構造方法__SDK接口說明_Python版SDK_批量計算-阿裏雲