Databricks ジョブのタスク間で情報を共有する
タスク値を使用して、 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()
の 2 つのコマンドが用意されています。 Get_user_data
とAnalyze_user_data
という 2 つのノートブック タスクがあり、ユーザーの名前と年齢を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
することはできません.
タスク間でコンテキストを共有するより複雑な例として、さまざまな個人属性を考慮して個人の収入を予測するためのいくつかの機械学習モデルと、前の 3 つの出力に基づいて使用する最適なモデルを決定するタスクを含むアプリケーションがあるとします。タスク。 モデルは、 Logistic_Regression
、 Decision_Tree
、およびRandom_Forest
という名前の 3 つのタスクによって実行され、 Best_Model
タスクは、前の 3 つのタスクからの出力に基づいて、使用する最適なモデルを決定します。
各モデルの精度 (分類器が収入をどの程度正確に予測するか) がタスク値に渡され、最もパフォーマンスの高いアルゴリズムが決定されます。 たとえば、 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")
タスク値の表示
タスク実行後のタスクの値を確認するには、タスクの タスク履歴に移動します。 タスク値の結果は出力パネルに表示されます。