Azure Databricks 작업의 작업 간 정보 공유

작업 값을 사용하여 Azure Databricks 작업의 태스크 간에 임의의 매개 변수를 전달할 수 있습니다. Databricks 유틸리티에서 taskValues 하위 유틸리티를 사용하여 작업 값을 전달합니다. taskValues 하위 유틸리티는 작업이 후속 작업에서 참조할 수 있는 값을 출력할 수 있도록 하는 간단한 API를 제공하여 보다 표현력이 풍부한 워크플로를 쉽게 만들 수 있도록 합니다. 예를 들어 작업 실행 내의 여러 태스크 간에 기계 학습 모델의 평가에 대한 정보와 같은 식별자 또는 메트릭을 커뮤니케이션할 수 있습니다. 각 작업은 여러 작업 값을 설정하고 가져올 수 있습니다. 작업 값은 Python Notebooks에서 설정하고 검색할 수 있습니다.

참고 항목

이제 Notebook의 동적 값 참조를 사용하여 업스트림 작업에 설정된 작업 값을 참조할 수 있습니다. 예를 들어 태스크Get_user_data에서 설정한 키를 name 사용하여 값을 참조하려면 .를 사용합니다{{tasks.Get_user_data.values.name}}. 여러 작업 유형과 함께 사용할 수 있으므로 Databricks는 프로그래밍 방식으로 작업 값을 검색하는 대신 dbutils.jobs.taskValues.get 동적 값 참조를 사용하는 것이 좋습니다.

작업 값 사용

taskValues 하위 유틸리티는 변수를 설정하는 dbutils.jobs.taskValues.set() 및 값을 검색하는 dbutils.jobs.taskValues.get()의 두 가지 명령을 제공합니다. 두 개의 Notebook 작업(Get_user_dataAnalyze_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 표현 크기는 48KiB를 초과할 수 없습니다.

다음 예에서는 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를 지정하지 않은 경우).
  • defaultkey를 찾을 수 없는 경우에 반환되는 선택적 값입니다. defaultNone일 수 없습니다.
  • debugValue는 작업 외부에서 실행되는 Notebook 내에서 태스크 값을 가져오는 경우 반환되는 선택적 값입니다. 이는 디버깅 중에 Notebook을 수동으로 실행하고 기본적으로 TypeError를 발생시키는 대신 일부 값을 반환하려는 경우에 유용할 수 있습니다. debugValueNone일 수 없습니다.

작업 간에 컨텍스트를 공유하는 보다 복잡한 예로, 다양한 개인 특성이 지정된 개인의 수입을 예측하는 여러 기계 학습 모델과 이전 세 작업의 출력에 따라 사용할 최상의 모델을 결정하는 작업이 포함된 애플리케이션이 있다고 가정합니다. 모델은 Logistic_Regression, Decision_TreeRandom_Forest라는 세 가지 작업에 의해 실행되며 Best_Model 작업은 이전 세 가지 작업의 출력을 기반으로 사용할 최상의 모델을 결정합니다.

Graph of example classification application

각 모델의 정확도(분류자가 수입을 얼마나 잘 예측하는지)는 작업 값에 전달되어 가장 성능이 좋은 알고리즘을 결정합니다. 예를 들어, Logistic_Regression 작업과 연결된 로지스틱 회귀 분석 Notebook에는 다음 명령이 포함됩니다.

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")

작업 값 보기

작업이 실행된 후 작업 값의 값을 보려면 해당 작업의 작업 실행 기록으로 이동합니다. 작업 값 결과는 출력 패널에 표시됩니다.