在 Azure Databricks 作業中共用工作之間的資訊
您可以使用 工作值 ,在 Azure Databricks 作業中的工作之間傳遞任意參數。 您可以使用 Databricks Utilities 中的 taskValues 子公用程式 來傳遞工作值 。 taskValues 子公用程式提供簡單的 API,可讓工作輸出可在後續工作中參考的值,讓您更輕鬆地建立更具表現力的工作流程。 例如,您可以在作業執行內的不同工作之間傳達識別碼或計量,例如機器學習模型評估的相關資訊。 每個工作都可以設定並取得多個工作值。 您可以在 Python 筆記本中設定和擷取工作值。
注意
您現在可以在筆記本中使用 動態值參考 ,參考上游工作中設定的工作值。 例如,若要使用工作所設定的 Get_user_data
索引鍵 name
來參考 值,請使用 {{tasks.Get_user_data.values.name}}
。 由於它們可以與多個工作類型搭配使用,Databricks 建議使用動態值參考,而不是 dbutils.jobs.taskValues.get
以程式設計方式擷取工作值。
使用工作值
taskValues 子公用程式提供兩個命令: dbutils.jobs.taskValues.set()
設定變數和 dbutils.jobs.taskValues.get()
擷取值。 假設您有兩個筆記本工作: Get_user_data
以及 Analyze_user_data
想要將使用者的名稱和年齡從 Get_user_data
工作傳遞至工作 Analyze_user_data
。 下列範例會設定工作中使用者的名稱和年齡 Get_user_data
:
dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
key
是工作值索引鍵的名稱。 此名稱對工作而言必須是唯一的。value
是此工作值索引鍵的值。 此命令必須能夠以 JSON 格式在內部表示值。 值的 JSON 表示大小不能超過 48 KiB。
下列範例接著會取得工作中的值 Analyze_user_data
:
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
taskKey
是工作工作設定值的名稱。 如果命令找不到此工作,ValueError
則會引發 。key
是工作值索引鍵的名稱。 如果命令找不到此工作值的索引鍵,ValueError
則會引發 (除非default
指定 )。default
如果找不到,則為傳key
回的選擇性值。default
不可以是None
。debugValue
是選擇性值,如果您嘗試從在作業外部執行的筆記本內取得工作值,則會傳回這個值。 當您想要手動執行筆記本並傳回某些值,而不是預設引發TypeError
時,這在偵錯期間很有用。debugValue
不可以是None
。
作為在工作之間共用內容更複雜的範例,假設您有一個應用程式,其中包含數個機器學習模型來預測個人收入的各種個人屬性,以及決定根據前三個工作的輸出使用的最佳模型。 模型是由三個名為 Logistic_Regression
、 Decision_Tree
和 Random_Forest
的工作來執行,而工作 Best_Model
會根據前三個工作的輸出決定要使用的最佳模型。
每個模型的精確度(分類器預測收入的精確度)都會傳入工作值,以判斷最佳執行演算法。 例如,與 Logistic_Regression
工作相關聯的羅吉斯回歸筆記本包含下列命令:
dbutils.jobs.taskValues.set(key = "model_performance", value = result)
每個模型工作都會設定 model_performance
索引鍵的值。 工作 Best_Model
會讀取每個工作的值,並使用該值來判斷最佳模型。 下列範例會讀取工作所 Logistic_Regression
設定的值:
logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")
檢視工作值
若要在工作執行之後檢視工作值的值,請移至 工作的工作執行歷程記錄 。 工作值結果會顯示在 [輸出 ] 面板中。