Synapse Notebook을 실행하여 데이터 변환

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

Synapse 파이프라인의 Azure Synapse Notebook 활동은 Azure Synapse 활동 영역에서 Synapse Notebook을 실행합니다. 이 문서는 데이터 변환 및 지원되는 변환 활동의 일반적인 개요를 표시하는 데이터 변환 활동 문서에서 작성합니다. 

Synapse Notebook 활동 만들기

Synapse 파이프라인 캔버스 또는 Notebook 편집기에서 직접 Synapse Notebook 활동을 만들 수 있습니다. Synapse Notebook에서 선택한 Spark 풀에서 Synapse Notebook 활동이 실행됩니다.

파이프라인 캔버스에서 Synapse Notebook 활동 추가

활동Synapse Notebook을 끌어서 Synapse 파이프라인 캔버스에 놓습니다. Synapse Notebook 활동 상자를 선택하고 설정\에서 현재 활동에 대한 Notebook 콘텐츠를 구성합니다. 현재 작업 영역에서 기존 Notebook을 선택하거나 새로 추가할 수 있습니다.

현재 작업 영역에서 기존 Notebook을 선택하는 경우 열기 단추를 클릭하여 Notebook 페이지를 직접 열 수 있습니다.

(선택 사항) 설정에서 Spark pool\Executor size\Dynamically allocate executors\Min executors\Max executors\Driver 크기를 다시 구성할 수도 있습니다. 다시 구성한 설정은 Notebook의 구성 세션 설정을 대체합니다. 현재 Notebook 활동의 설정에서 아무것도 설정되지 않았으면 해당 Notebook의 구성 세션 설정을 사용하여 실행됩니다.

screenshot-showing-create-notebook-activity

속성 설명 필수
Spark 풀 Spark 풀에 대한 참조입니다. 목록에서 Apache Spark 풀을 선택할 수 있습니다. 이 설정이 비어 있으면 Notebook 자체의 Spark 풀에서 실행됩니다. 아니요
실행기 크기 지정한 Apache Spark 풀에서 세션에 할당된 실행기에 사용할 코어 및 메모리 수입니다. 아니요
동적으로 실행기를 할당 이 설정은 Spark 애플리케이션 실행기 할당을 위해 Spark 구성의 동적 할당 속성에 매핑됩니다. 아니요
최소 실행기 작업에 대해 지정된 Spark 풀에 할당할 최소 실행기 수입니다. 아니요
최대 실행기 작업에 대해 지정된 Spark 풀에 할당할 최대 실행기 수입니다. 아니요
드라이버 크기 작업에 대해 지정된 Apache Spark 풀에 제공된 드라이버에 사용할 코어 및 메모리의 수입니다. 아니요

참고 항목

Azure Synapse 파이프라인에서 병렬 Spark Notebooks의 실행은 FIFO 방식으로 대기열에 있고 실행됩니다. 대기열의 작업 순서는 시간 순서에 따르며 대기열에 있는 작업의 만료 시간은 3일입니다. Notebooks의 대기열에 유의합니다. Synapse 파이프라인에서만 작동합니다.

Synapse 파이프라인에 Notebook 추가

오른쪽 위 모서리에서 파이프라인에 추가 단추를 선택하여 기존 파이프라인에 Notebook을 추가하거나 새 파이프라인을 만듭니다.

screenshot-showing-add-notebook-to-pipeline

매개 변수 전달

매개 변수 셀 지정

Notebook을 매개 변수화하려면 줄임표(...)를 선택하여 셀 도구 모음에서 기타 명령에 액세스합니다. 그런 다음, 매개 변수 셀 설정/해제를 선택하여 셀을 매개 변수 셀로 지정합니다.

screenshot-showing-azure-notebook-toggle-parameter

Azure Data Factory는 매개 변수 셀을 찾고 실행 시 전달되는 매개 변수의 기본값으로 이 값을 사용합니다. 실행 엔진은 기본값을 덮어쓰기 위해 입력 매개 변수를 사용하여 매개 변수 셀 아래에 새 셀을 추가합니다.

파이프라인에서 매개 변수 값 할당

매개 변수를 사용하여 Notebook을 만든 후에는 Synapse Notebook 활동을 사용하여 파이프라인에서 이를 실행할 수 있습니다. 파이프라인 캔버스에 활동을 추가한 후에는 설정 탭의 기본 매개 변수 섹션에서 매개 변수 값을 설정할 수 있습니다.

screenshot-showing-assign-a-parameter

매개 변수 값을 할당하는 경우 파이프라인 식 언어 또는 시스템 변수를 사용할 수 있습니다.

Synapse Notebook 셀 출력 값 읽기

아래 단계에 따라 다음 활동의 Notebook 셀 출력 값을 읽을 수 있습니다.

  1. Synapse Notebook 활동에서 mssparkutils.notebook.exit API를 호출하여 활동 출력에 표시하려는 값을 반환합니다. 예를 들면 다음과 같습니다.

    mssparkutils.notebook.exit("hello world") 
    

    Notebook 콘텐츠를 저장하고 파이프라인을 다시 트리거하면, 2단계에서 다음 활동에 사용할 수 있는 exitValue가 Notebook 활동 출력에 포함됩니다.

  2. Notebook 활동 출력에서 exitValue 속성을 읽습니다. 다음은 Notebook 활동 출력에서 가져온 exitValue가 “hello world”와 같은지 확인하기 위해 사용하는 샘플 식입니다.

    screenshot-showing-read-exit-value

다른 Synapse Notebook 실행

%run magic 또는 mssparkutils Notebook 유틸리티를 호출하여 Synapse Notebook 활동에서 다른 Notebook을 참조할 수 있습니다. 모두 중첩 함수 호출을 지원합니다. 시나리오에 따라 다음과 같이 이 두 방법 사이의 주요 차이점을 고려해야 합니다.

  • %run magic은 참조된 Notebook의 모든 셀을 %run 셀에 복사하고 변수 컨텍스트를 공유합니다. notebook1이 %run notebook2를 통해 notebook2를 참조하고 notebook2는 mssparkutils.notebook.exit 함수를 호출할 경우 notebook1의 셀 실행이 중지됩니다. Notebook 파일을 "포함"하려면 %run magic을 사용하는 것이 좋습니다.
  • mssparkutils Notebook 유틸리티는 참조된 Notebook을 메서드나 함수 형태로 호출합니다. 변수 컨텍스트는 공유되지 않습니다. notebook1이 mssparkutils.notebook.run("notebook2")를 통해 notebook2를 참조하고 notebook2는 mssparkutils.notebook.exit 함수를 호출할 경우 notebook1의 셀 실행이 진행됩니다. Notebook을 "가져오려는” 경우 mssparkutils Notebook 유틸리티를 사용하는 것이 좋습니다.

Notebook 활동 실행 기록 참조

모니터 탭의 파이프라인 실행으로 이동하면 트리거한 파이프라인이 표시됩니다. Notebook 활동을 포함하는 파이프라인을 열어 실행 기록을 확인합니다.

Notebook 열기 단추를 선택하여 셀 입력 및 출력을 모두 포함하는 최신 Notebook 실행 스냅샷을 볼 수 있습니다.

Screenshot that shows the notebook activity history.

Notebook 스냅샷 열기:

Screenshot that shows an open notebook snapshot.

입력 또는 출력 단추를 선택하여 Notebook 활동 입력 또는 출력을 확인할 수 있습니다. 파이프라인이 실패하여 사용자 오류가 발생한 경우 출력을 선택하여 결과 필드에서 상세 사용자 오류 역추적을 확인합니다.

Screenshot that shows the user error details.

Synapse Notebook 활동 정의

Synapse Notebook 활동의 샘플 JSON 정의는 다음과 같습니다.

{
    "name": "parameter_test",
    "type": "SynapseNotebook",
    "dependsOn": [],
    "policy": {
        "timeout": "7.00:00:00",
        "retry": 0,
        "retryIntervalInSeconds": 30,
        "secureOutput": false,
        "secureInput": false
    },
    "userProperties": [],
    "typeProperties": {
        "notebook": {
            "referenceName": "parameter_test",
            "type": "NotebookReference"
        },
        "parameters": {
            "input": {
                "value": {
                    "value": "@pipeline().parameters.input",
                    "type": "Expression"
                }
            }
        }
    }
}

Synapse Notebook 활동 출력

Synapse Notebook 활동 출력의 샘플 JSON 정의는 다음과 같습니다.

{
{
    "status": {
        "Status": 1,
        "Output": {
            "status": <livySessionInfo>
            },
            "result": {
                "runId": "<GUID>",
                "runStatus": "Succeed",
                "message": "Notebook execution is in Succeeded state",
                "lastCheckedOn": "2021-03-23T00:40:10.6033333Z",
                "errors": {
                    "ename": "",
                    "evalue": ""
                },
                "sessionId": 4,
                "sparkpool": "sparkpool",
                "snapshotUrl": "https://myworkspace.dev.azuresynapse.net/notebooksnapshot/{guid}",
                "exitCode": "abc" // return value from user notebook via mssparkutils.notebook.exit("abc")
            }
        },
        "Error": null,
        "ExecutionDetails": {}
    },

    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West US 2)",
    "executionDuration": 234,
    "durationInQueue": {
        "integrationRuntimeQueue": 0
    },
    "billingReference": {
        "activityType": "ExternalActivity",
        "billableDuration": [
            {
                "meterType": "AzureIR",
                "duration": 0.06666666666666667,
                "unit": "Hours"
            }
        ]
    }
}

알려진 문제

Notebook 이름이 파이프라인 Notebook 작업에서 매개 변수화되면 게시되지 않은 상태의 Notebook 버전을 디버그 실행에서 참조할 수 없습니다.