喬布斯API更新
您現在可以使用Databricks編排多個任務工作.的更改細節喬布斯API 2.1它支持多任務作業,並提供指導,以幫助您更新現有的API客戶機以使用這個新特性。
Databricks建議將Jobs API 2.1用於API腳本和客戶端,特別是在使用帶有多個任務的作業時。
本文將使用單個任務定義的作業稱為單一任務的格式有多個任務的工作定義為多任務的格式.
Jobs API 2.0和2.1現在支持更新請求。使用更新
請求更改現有作業,而不是更改重置請求盡量減少單任務格式作業和多任務格式作業之間的更改。
API的變化
Jobs API現在定義了一個TaskSettings
對象以捕獲作業中每個任務的設置。對於多任務格式作業,可以使用任務
的數組TaskSettings
數據結構,包含在JobSettings
對象。部分字段以前的部分JobSettings
現在是多任務格式作業的任務設置的一部分。JobSettings
也已更新,包括格式
字段。的格式
字段表示作業的格式,為字符串
值設置為SINGLE_TASK
或MULTI_TASK
.
您需要更新現有的API客戶機,以便對多任務格式作業的JobSettings進行這些更改。看到API客戶機指南有關所需更改的詳細信息。
Jobs API 2.1支持多任務格式。所有API 2.1請求必須符合多任務格式,響應也必須按照多任務格式進行組織。首先發布了API 2.1的新特性。
Jobs API 2.0更新了一個額外的字段,以支持多任務格式的作業。除特別注明外,本文檔中的示例使用API 2.0。然而,Databricks建議對新的和現有的API腳本和客戶端使用API 2.1。
一個代表API 2.0和2.1的多任務格式作業的JSON文檔示例:
{“job_id”:53,“設置”:{“名稱”:“有多個任務的工作”,“email_notifications”:{},“timeout_seconds”:0,“max_concurrent_runs”:1,“任務”:[{“task_key”:“clean_data”,“描述”:“清理和準備數據”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/clean-data”},“existing_cluster_id”:“1201 -我的集群”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}},{“task_key”:“analyze_data”,“描述”:對數據進行分析,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/analyze-data”},“depends_on”:[{“task_key”:“clean_data”}),“existing_cluster_id”:“1201 -我的集群”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}}),“格式”:“MULTI_TASK”},“created_time”:1625841911296,“creator_user_name”:“user@www.eheci.com”,“run_as_user_name”:“user@www.eheci.com”}
Jobs API 2.1支持配置任務級別集群或一個或多個共享作業集群:
任務級集群在任務啟動時創建並啟動,在任務完成時終止。
共享作業集群允許同一作業中的多個任務使用該集群。當使用集群的第一個任務啟動時創建並啟動集群,並在使用集群的最後一個任務完成後終止集群。共享作業集群在空閑時不會終止,而是在所有使用它的任務完成後才終止。共享一個集群的多個不依賴的任務可以同時啟動。如果共享作業集群在所有任務完成之前失敗或終止,則會創建一個新的集群。
要配置共享作業集群,需要包含JobCluster
數組的JobSettings
對象。每個作業最多可以指定100個集群。以下是配置了兩個共享集群的作業的API 2.1響應示例:
請注意
如果任務具有庫依賴項,則必須配置任務
字段設置;不能在共享作業集群配置中配置庫。在下麵的例子中,庫
的配置中的ingest_orders
任務演示了庫依賴項的規範。
{“job_id”:53,“設置”:{“名稱”:“有多個任務的工作”,“email_notifications”:{},“timeout_seconds”:0,“max_concurrent_runs”:1,“job_clusters”:[{“job_cluster_key”:“default_cluster”,“new_cluster”:{“spark_version”:“7.3.x-scala2.12”,“node_type_id”:“i3.xlarge”,“spark_conf”:{“spark.speculation”:真正的},“aws_attributes”:{“可用性”:“現貨”,“zone_id”:“us-west-2a”},“自動定量”:{“min_workers”:2,“max_workers”:8}}},{“job_cluster_key”:“data_processing_cluster”,“new_cluster”:{“spark_version”:“7.3.x-scala2.12”,“node_type_id”:“r4.2xlarge”,“spark_conf”:{“spark.speculation”:真正的},“aws_attributes”:{“可用性”:“現貨”,“zone_id”:“us-west-2a”},“自動定量”:{“min_workers”:8,“max_workers”:16}}}),“任務”:[{“task_key”:“ingest_orders”,“描述”:“攝取訂單數據”,“depends_on”:[),“job_cluster_key”:“auto_scaling_cluster”,“spark_jar_task”:{“main_class_name”:“com.databricks.OrdersIngest”,“參數”:[”——數據”,“dbfs: /道路/ / order-data.json”]},“庫”:[{“罐子”:“dbfs: / mnt /磚/ OrderIngest.jar”}),“timeout_seconds”:86400,“max_retries”:3.,“min_retry_interval_millis”:2000,“retry_on_timeout”:假},{“task_key”:“clean_orders”,“描述”:“清理並準備訂單數據”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/clean-data”},“job_cluster_key”:“default_cluster”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}},{“task_key”:“analyze_orders”,“描述”:“對訂單數據進行分析”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/analyze-data”},“depends_on”:[{“task_key”:“clean_data”}),“job_cluster_key”:“data_processing_cluster”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}}),“格式”:“MULTI_TASK”},“created_time”:1625841911296,“creator_user_name”:“user@www.eheci.com”,“run_as_user_name”:“user@www.eheci.com”}
對於單任務格式的作業,JobSettings
數據結構保持不變,除非增加格式
字段。沒有TaskSettings
數組中包含任務設置,並且任務設置保持在JobSettings
數據結構。您不需要更改現有的API客戶機來處理單任務格式作業。
一個代表API 2.0單任務格式作業的JSON文檔示例:
{“job_id”:27,“設置”:{“名稱”:“筆記本”,“existing_cluster_id”:“1201 -我的集群”,“庫”:[{“罐子”:“dbfs: / FileStore /罐/ spark_examples.jar”}),“email_notifications”:{},“timeout_seconds”:0,“安排”:{“quartz_cron_expression”:“0 0 0 * * ?”,“timezone_id”:“我們/太平洋”,“pause_status”:“停頓”},“notebook_task”:{“notebook_path”:“/筆記本電腦/ example-notebook”,“revision_timestamp”:0},“max_concurrent_runs”:1,“格式”:“SINGLE_TASK”},“created_time”:1504128821443,“creator_user_name”:“user@www.eheci.com”}
API客戶機指南
本節為受新的多任務格式特性影響的API調用提供指導原則、示例和必需的更改。
創建
方法創建單任務格式作業創建新工作操作(帖子/ /創建工作
),您不需要更改現有的客戶機。
要創建多任務格式作業,請使用任務
場JobSettings
為每個任務指定設置。下麵的示例創建一個帶有兩個筆記本任務的作業。這個例子適用於API 2.0和2.1:
請注意
每個作業最多可以指定100個任務。
{“名稱”:“Multi-task-job”,“max_concurrent_runs”:1,“任務”:[{“task_key”:“clean_data”,“描述”:“清理和準備數據”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/clean-data”},“existing_cluster_id”:“1201 -我的集群”,“timeout_seconds”:3600,“max_retries”:3.,“retry_on_timeout”:真正的},{“task_key”:“analyze_data”,“描述”:對數據進行分析,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/analyze-data”},“depends_on”:[{“task_key”:“clean_data”}),“existing_cluster_id”:“1201 -我的集群”,“timeout_seconds”:3600,“max_retries”:3.,“retry_on_timeout”:真正的}]}
運行提交
方法提交單任務格式作業的一次性運行創建並觸發一次性運行操作(帖子/ /提交運行
),您不需要更改現有的客戶機。
若要提交一次性運行的多任務格式作業,請使用任務
場JobSettings
為每個任務(包括集群)指定設置。在提交多任務格式作業時,必須在任務級別設置集群,因為運行提交
請求不支持共享作業集群。看到創建為一個例子JobSettings
指定多個任務。
更新
方法更新單任務格式作業部分更新作業操作(帖子/ /更新工作
),您不需要更改現有的客戶機。
若要更新多任務格式作業的設置,必須使用惟一的task_key
字段來識別新的任務
設置。看到創建為一個例子JobSettings
指定多個任務。
重置
方法覆蓋單任務格式作業的設置覆蓋作業的所有設置操作(帖子/工作/重置
),您不需要更改現有的客戶機。
若要覆蓋多任務格式作業的設置,請指定JobSettings
數組的數據結構TaskSettings
數據結構。看到創建為一個例子JobSettings
指定多個任務。
使用更新在不從單任務格式切換到多任務格式的情況下更改單個字段。
列表
對於單任務格式作業,不需要更改客戶機即可處理來自的響應列出所有工作操作(得到/工作/列表
)。
對於多任務格式作業,大多數設置在任務級別定義,而不是在作業級別定義。可以在任務或作業級別設置集群配置。控件中返回的多任務格式作業的修改客戶端以訪問集群或任務設置工作
結構:
下麵的示例顯示一個包含單任務和多任務格式作業的響應。下麵是API 2.0的例子:
{“工作”:[{“job_id”:36,“設置”:{“名稱”:“隻有一個任務的工作”,“existing_cluster_id”:“1201 -我的集群”,“email_notifications”:{},“timeout_seconds”:0,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/example-notebook”,“revision_timestamp”:0},“max_concurrent_runs”:1,“格式”:“SINGLE_TASK”},“created_time”:1505427148390,“creator_user_name”:“user@www.eheci.com”},{“job_id”:53,“設置”:{“名稱”:“有多個任務的工作”,“email_notifications”:{},“timeout_seconds”:0,“max_concurrent_runs”:1,“格式”:“MULTI_TASK”},“created_time”:1625841911296,“creator_user_name”:“user@www.eheci.com”}]}
得到
對於單任務格式作業,不需要更改客戶機即可處理來自的響應找到一份工作操作(得到/ /找到工作
)。
多任務格式作業返回的數組任務
包含任務設置的數據結構。如果需要訪問任務級別的詳細信息,則需要修改客戶機以遍曆任務
數組並提取所需字段。
的示例響應得到
用於多任務格式作業的API調用。這個例子適用於API 2.0和2.1:
{“job_id”:53,“設置”:{“名稱”:“有多個任務的工作”,“email_notifications”:{},“timeout_seconds”:0,“max_concurrent_runs”:1,“任務”:[{“task_key”:“clean_data”,“描述”:“清理和準備數據”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/clean-data”},“existing_cluster_id”:“1201 -我的集群”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}},{“task_key”:“analyze_data”,“描述”:對數據進行分析,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/analyze-data”},“depends_on”:[{“task_key”:“clean_data”}),“existing_cluster_id”:“1201 -我的集群”,“max_retries”:3.,“min_retry_interval_millis”:0,“retry_on_timeout”:真正的,“timeout_seconds”:3600,“email_notifications”:{}}),“格式”:“MULTI_TASK”},“created_time”:1625841911296,“creator_user_name”:“user@www.eheci.com”,“run_as_user_name”:“user@www.eheci.com”}
運行得到
對於單任務格式作業,不需要更改客戶機即可處理來自的響應去找份工作操作(得到/工作/運行/
)。
多任務格式作業運行的響應包含一個數組TaskSettings
.檢索每個任務的運行結果:
遍曆每個任務。
解析
run_id
為每一個任務。調用獲取運行的輸出操作(
得到/ /運行/輸出工作
)run_id
獲取每個任務運行的詳細信息。以下是該請求的一個示例響應:
{“job_id”:53,“run_id”:759600,“number_in_job”:7,“original_attempt_run_id”:759600,“狀態”:{“life_cycle_state”:“終止”,“result_state”:“成功”,“state_message”:""},“cluster_spec”:{},“start_time”:1595943854860,“setup_duration”:0,“execution_duration”:0,“cleanup_duration”:0,“觸發”:“ONE_TIME”,“creator_user_name”:“user@www.eheci.com”,“run_name”:“查詢日誌”,“run_type”:“JOB_RUN”,“任務”:[{“run_id”:759601,“task_key”:“查詢日誌”,“描述”:“查詢會話日誌”,“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/log-query”},“existing_cluster_id”:“1201 -我的集群”,“狀態”:{“life_cycle_state”:“終止”,“result_state”:“成功”,“state_message”:""}},{“run_id”:759602,“task_key”:“validate_output”,“描述”:“驗證查詢輸出”,“depends_on”:[{“task_key”:“查詢日誌”}),“notebook_task”:{“notebook_path”:“/用戶/ user@www.eheci.com/validate-query-results”},“existing_cluster_id”:“1201 -我的集群”,“狀態”:{“life_cycle_state”:“終止”,“result_state”:“成功”,“state_message”:""}}),“格式”:“MULTI_TASK”}
運行得到的輸出
對於單任務格式作業,不需要更改客戶機即可處理來自的響應獲取運行的輸出操作(得到/ /運行/輸出工作
)。
對於多任務格式作業,調用運行得到輸出
在父運行中會導致錯誤,因為運行輸出僅對單個任務可用。獲取多任務格式作業的輸出和元數據:
調用獲取運行的輸出請求。
遍曆子對象
run_id
字段。使用的孩子
run_id
值調用運行得到輸出
.
運行清單
對於單任務格式作業,不需要更改客戶機即可處理來自的響應列表運行一個工作操作(得到/工作/運行/列表
).
對於多任務格式作業,一個空的任務
返回數組。通過run_id
到去找份工作操作(得到/工作/運行/
)以檢索任務。的示例響應運行列表
多任務格式作業的API調用:
{“運行”:[{“job_id”:53,“run_id”:759600,“number_in_job”:7,“original_attempt_run_id”:759600,“狀態”:{“life_cycle_state”:“終止”,“result_state”:“成功”,“state_message”:""},“cluster_spec”:{},“start_time”:1595943854860,“setup_duration”:0,“execution_duration”:0,“cleanup_duration”:0,“觸發”:“ONE_TIME”,“creator_user_name”:“user@www.eheci.com”,“run_name”:“查詢日誌”,“run_type”:“JOB_RUN”,“任務”:[],“格式”:“MULTI_TASK”}),“has_more”:假}