다음을 통해 공유


Synapse Notebook 만들기, 개발 및 유지 관리

Azure Synapse Analytics(Synapse Notebook)의 Notebook은 라이브 코드, 시각화 및 설명 텍스트가 포함된 파일을 만들 수 있는 웹 인터페이스입니다. Notebook은 아이디어를 검증하고 빠른 실험을 사용하여 데이터를 통해 인사이트를 확보하기 좋은 도구입니다. Notebook은 데이터 준비, 데이터 시각화, 기계 학습 및 기타 빅 데이터 시나리오에도 널리 사용됩니다.

Synapse Notebook의 이점은 다음과 같습니다.

  • 시작에 필요한 설정 작업이 전혀 없습니다.
  • 기본 제공 엔터프라이즈 보안 기능을 사용하여 데이터를 안전하게 유지할 수 있습니다.
  • Spark 및 SQL에 대해 원시 형식(예: CSV, TXT 및 JSON), 처리된 파일 형식(예: Parquet, Delta Lake 및 ORC) 및 SQL 테이블 형식 데이터 파일에서 데이터를 분석합니다.
  • 향상된 제작 기능 및 기본 제공 데이터 시각화를 통해 생산성을 높일 수 있습니다.

이 문서에서는 Synapse Studio에서 Notebook을 사용하는 방법을 설명합니다.

Notebook 만들기

새 Notebook을 만들거나 기존 Notebook을 개체 탐색기 Synapse 작업 영역으로 가져올 수 있습니다. 개발을 선택하고 전자 필기장을 마우스 오른쪽 단추로 클릭한 다음 새 전자 필기장 또는 가져오기를 선택합니다. Synapse Notebook은 표준 Jupyter Notebook IPYNB 파일을 인식합니다.

전자 필기장을 만들거나 가져오기 위한 선택 항목의 스크린샷.

Notebook 개발

Notebook은 독립적으로 또는 그룹으로 실행할 수 있는 개별 코드 또는 텍스트 블록인 셀로 구성됩니다.

다음 섹션에서는 Notebook 개발 작업에 대해 설명합니다.

참고 항목

Notebook에서 SparkSession 인스턴스는 자동으로 만들어지고 라는 spark변수에 저장됩니다. 호출sc된 변수 SparkContext 도 있습니다. 사용자는 이러한 변수에 직접 액세스할 수 있지만 이러한 변수의 값을 변경해서는 안 됩니다.

셀 추가

Notebook에 새 셀을 추가하는 방법에는 여러 가지가 있습니다.

  • 두 셀 사이의 공간을 마우스로 가리키고 코드 또는 Markdown을 선택합니다.

    Synapse Notebook의 코드 및 Markdown 단추 스크린샷

  • 명령 모드에서 바로 가기 키를 사용합니다. 현재 셀 위에 셀을 삽입하려면 A 키를 선택합니다. 현재 셀 아래에 셀을 삽입하려면 B 키를 선택합니다.

기본 언어 설정

Synapse Notebook은 4개의 Apache Spark 언어를 지원합니다.

  • PySpark(Python)
  • Spark(Scala)
  • Spark SQL
  • .NET Spark(C#)
  • SparkR(R)

위쪽 명령 모음의 언어 드롭다운 목록에서 새로 추가된 셀에 대한 기본 언어 를 설정할 수 있습니다.

Synapse Notebook에서 언어를 선택하는 드롭다운 목록의 스크린샷

여러 언어 사용

셀 시작 부분에 올바른 언어 매직 명령을 지정하면 Notebook 하나에서 여러 언어를 사용할 수 있습니다. 셀 언어를 전환하는 매직 명령은 다음 표에 나열되어 있습니다.

매직 명령 언어 설명
%%pyspark Python 에 대해 Python 쿼리를 실행합니다 SparkContext.
%%spark Scala 에 대해 Scala 쿼리를 실행합니다 SparkContext.
%%sql Spark SQL 에 대해 Spark SQL 쿼리를 실행합니다 SparkContext.
%%csharp .NET for Spark C# .NET for Spark C# 쿼리를 실행합니다 SparkContext.
%%sparkr R 에 대해 R 쿼리를 실행합니다 SparkContext.

다음 이미지는 Spark(Scala) Notebook에서 매직 명령을 사용하여 매직 명령 또는 Spark SQL 쿼리를 사용하여 %%pyspark PySpark 쿼리를 작성하는 방법의 %%sql 예를 보여 줍니다. Notebook의 기본 언어는 PySpark로 설정됩니다.

Synapse Notebook의 Spark 매직 명령 스크린샷

임시 테이블을 사용하여 언어 간 데이터 참조

Synapse Notebook에서는 여러 언어에서 직접 데이터 또는 변수를 참조할 수 없습니다. Spark에서 언어 간에 임시 테이블을 참조할 수 있습니다. 다음은 Spark 임시 테이블을 해결 방법으로 사용하여 PySpark 및 Spark SQL에서 Scala DataFrame을 읽는 방법의 예입니다.

  1. 셀 1에서 Scala를 사용하여 SQL 풀 커넥터에서 DataFrame을 읽고 임시 테이블을 만듭니다.

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. 셀 2에서 Spark SQL을 사용하여 데이터를 쿼리합니다.

    %%sql
    SELECT * FROM mydataframetable
    
  3. 셀 3에서 PySpark의 데이터를 사용합니다.

    %%pyspark
    myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
    

IDE 스타일 IntelliSense 사용

Synapse Notebook은 Monaco 편집기와 통합되어 IDE 스타일 IntelliSense를 셀 편집기로 가져옵니다. 구문 강조 표시, 오류 표식 및 자동 코드 완성 기능을 사용하면 코드를 작성하고 문제를 더 빠르게 식별할 수 있습니다.

IntelliSense 기능은 완성도 수준이 언어마다 다릅니다. 지원되는 기능은 다음 표를 참조하세요.

언어 구문 강조 표시 구문 오류 표식 구문 코드 완성 변수 코드 완성 시스템 함수 코드 완성 사용자 함수 코드 완성 스마트 들여쓰기 코드 접기
PySpark(Python)
Spark(Scala) 없음
Spark SQL 없음 아니요 아니요
.NET for Spark(C#)

변수 코드 완성, 시스템 함수 코드 완성 및 .NET for Spark(C#)에 대한 사용자 함수 코드 완성을 활용하려면 활성 Spark 세션이 필요합니다.

코드 조각 사용

Synapse Notebook은 일반적으로 사용되는 코드 패턴을 더 쉽게 입력할 수 있도록 하는 코드 조각을 제공합니다. 이러한 패턴에는 Spark 세션을 구성하고, 데이터를 Spark 데이터 프레임으로 읽고, Matplotlib를 사용하여 차트를 그리는 것이 포함됩니다.

코드 조각은 다른 제안과 혼합된 IDE 스타일 IntelliSense의 바로 가기 키에 표시됩니다. 코드 조각의 내용은 코드 셀 언어와 일치합니다. 코드 조각 또는 코드 조각 제목에 표시되는 키워드를 코드 셀 편집기에서 입력 하여 사용 가능한 코드 조각을 볼 수 있습니다. 예를 들어 읽기를 입력하면 다양한 데이터 원본에서 데이터를 읽을 코드 조각 목록을 볼 수 있습니다.

Synapse Notebook에 있는 코드 조각의 애니메이션 GIF입니다.

도구 모음 단추를 사용하여 텍스트 셀 서식 지정

텍스트 셀 도구 모음의 서식 단추를 사용하여 일반적인 Markdown 작업을 수행할 수 있습니다. 이러한 작업에는 텍스트를 굵게 표시하고, 텍스트를 기울임꼴로 만들고, 드롭다운 메뉴를 통해 단락 및 제목을 만들고, 코드를 삽입하고, 순서가 지정되지 않은 목록을 삽입하고, 순서가 지정된 목록을 삽입하고, 하이퍼링크를 삽입하고, URL에서 이미지를 삽입하는 작업이 포함됩니다.

Synapse Notebook의 텍스트 셀 도구 모음 스크린샷

셀 작업 실행 취소 또는 다시 실행

가장 최근의 셀 작업을 취소하려면 실행 취소 또는 다시 실행 단추를 선택하거나 Z 키 또는 Shift+Z를 선택합니다. 이제 최대 10개의 기록 셀 작업을 실행 취소하거나 다시 실행할 수 있습니다.

Synapse Notebook의 실행 취소 및 다시 실행 단추 스크린샷

지원되는 셀 작업에는 다음이 포함됩니다.

  • 셀을 삽입하거나 삭제합니다. 실행 취소를 선택하여 삭제 작업을 취소할 수 있습니다. 이 작업은 셀과 함께 텍스트 콘텐츠를 유지합니다.
  • 셀 순서를 다시 지정합니다.
  • 매개 변수 셀을 켜거나 끕니다.
  • 코드 셀과 Markdown 셀 간에 변환합니다.

참고 항목

셀에서 텍스트 작업 또는 주석 처리 작업을 실행 취소할 수 없습니다.

코드 셀에 대한 주석

  1. 전자 필기장 도구 모음에서 메모 단추를 선택하여 메모 창을 엽니다.

    Synapse Notebook의 메모 단추 및 메모 창 스크린샷

  2. 코드 셀에서 코드를 선택하고, 메모 창에서 새로 만들기를 선택하고, 메모를 추가한 다음, 메모 게시 단추를 선택합니다.

    Synapse Notebook에 메모를 입력하는 상자의 스크린샷

  3. 필요한 경우 메모 옆에 있는 줄임표(...)를 선택하여 메모 편집, 스레드 해결 및 스레드 삭제 작업을 수행할 수 있습니다.

    Synapse Notebook의 코드 셀에 대한 추가 명령 스크린샷

셀 이동

셀을 이동하려면 셀의 왼쪽을 선택하고 셀을 원하는 위치로 끌어옵니다.

Synapse Notebook에서 셀 이동의 애니메이션 GIF입니다.

셀 삭제

셀을 삭제하려면 셀 오른쪽의 삭제 단추를 선택합니다.

명령 모드에서 바로 가기 키를 사용할 수도 있습니다. Shift+D를 선택하여 현재 셀을 삭제합니다.

Synapse Notebook에서 셀을 삭제하는 단추의 스크린샷

셀 입력 축소

현재 셀의 입력을 축소하려면 셀 도구 모음에서 기타 명령 줄임표(...)를 선택한 다음 입력 숨기기를 선택합니다. 입력을 확장하려면 셀이 축소된 동안 입력 표시를 선택합니다.

Synapse Notebook에서 셀 입력을 축소하고 확장하는 애니메이션 GIF입니다.

셀 출력 축소

현재 셀의 출력을 축소하려면 셀 도구 모음에서 기타 명령 줄임표(...)를 선택한 다음 출력 숨기기를 선택합니다. 출력을 확장하려면 셀의 출력이 숨겨지는 동안 출력 표시를 선택합니다.

Synapse Notebook에서 셀 출력을 축소하고 확장하는 애니메이션 GIF입니다.

전자 필기장 개요 사용

개요(목차)는 빠른 탐색을 위해 사이드바 창에 있는 Markdown 셀의 첫 번째 Markdown 헤더를 표시합니다. 개요 사이드바의 크기가 조정 가능하고 축소 가능하여 화면에 가장 적합한 방식으로 맞출 수 있습니다. 사이드바를 열거나 숨기려면 Notebook 명령 모음에서 개요 단추를 선택합니다.

Synapse Notebook의 개요 사이드바 스크린샷

Notebook 실행

Notebook의 코드 셀을 개별적으로 또는 한꺼번에 실행할 수 있습니다. 각 셀의 상태와 진행률이 Notebook에 표시됩니다.

참고 항목

Notebook을 삭제해도 현재 실행 중인 작업은 자동으로 취소되지 않습니다. 작업을 취소해야 하는 경우 모니터 허브로 이동하여 수동으로 취소합니다.

셀 실행

셀에서 코드를 실행하는 방법에는 여러 가지가 있습니다.

  • 실행하려는 셀을 마우스로 가리킨 다음 셀 실행 단추를 선택하거나 Ctrl+Enter를 선택합니다.

    Synapse Notebook에서 셀을 실행하기 위한 명령의 스크린샷

  • 명령 모드에서 바로 가기 키를 사용합니다. Shift+Enter를 선택하여 현재 셀을 실행하고 그 아래의 셀을 선택합니다. Alt+Enter를 선택하여 현재 셀을 실행하고 그 아래에 새 셀을 삽입합니다.

모든 셀 실행

현재 Notebook의 모든 셀을 순서대로 실행하려면 모두 실행 단추를 선택합니다.

Synapse Notebook에서 모든 셀을 실행하기 위한 단추의 스크린샷

위 또는 아래 셀 모두 실행

현재 셀 위의 모든 셀을 순서대로 실행하려면 모두 실행 단추의 드롭다운 목록을 확장한 다음 위의 셀 실행을 선택합니다. 아래 셀 실행을 선택하여 현재 셀 아래의 모든 셀을 순서대로 실행합니다.

Synapse Notebook의 현재 셀 위와 아래에 있는 셀을 실행하는 명령의 스크린샷

실행 중인 모든 셀 취소

실행 중인 셀 또는 큐에서 대기 중인 셀을 취소하려면 모두 취소 단추를 선택합니다.

Synapse Notebook에서 실행 중이거나 대기 중인 모든 셀을 취소하는 단추의 스크린샷

Notebook 참조

현재 Notebook의 컨텍스트 내에서 다른 Notebook을 참조하려면 매직 명령을 사용합니다 %run <notebook path> . 참조 Notebook에 정의된 모든 변수는 현재 Notebook에서 사용할 수 있습니다.

예를 들어 다음과 같습니다.

%run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }

Notebook 참조는 대화형 모드와 파이프라인 모두에서 작동합니다.

%run 매직 명령에는 다음과 같은 제한 사항이 있습니다.

  • 이 명령은 중첩 호출을 지원하지만 재귀 호출은 지원하지 않습니다.
  • 이 명령은 절대 경로 또는 Notebook 이름을 매개 변수로만 전달할 수 있습니다. 상대 경로는 지원하지 않습니다.
  • 이 명령은 현재 4개의 매개 변수 값 형식 int( , float, boolstring)만 지원합니다. 변수 대체 작업은 지원하지 않습니다.
  • 참조된 Notebook을 게시해야 합니다. 게시되지 않은 전자 필기장 참조를 사용하도록 설정하는 옵션을 선택 하지 않는 한 전자 필기장을 참조하도록 전자 필기장을 게시해야 합니다. Synapse Studio는 Git 리포지토리에서 게시되지 않은 Notebook을 인식하지 못합니다.
  • 참조된 Notebook은 5보다 큰 문 깊이를 지원하지 않습니다.

변수 탐색기 사용

Synapse Notebook은 PySpark(Python) 셀에 대한 현재 Spark 세션의 변수를 나열하는 테이블 형식의 기본 제공 변수 탐색기를 제공합니다. 테이블에는 변수 이름, 형식, 길이 및 값에 대한 열이 포함됩니다. 코드 셀에 정의된 대로 더 많은 변수가 자동으로 표시됩니다. 각 열 머리글을 선택하면 테이블의 변수가 정렬됩니다.

변수 탐색기를 열거나 숨기려면 Notebook 명령 모음에서 변수 단추를 선택합니다.

Synapse Notebook의 변수 탐색기 스크린샷

참고 항목

변수 탐색기는 Python만 지원합니다.

셀 상태 표시기 사용

셀 실행의 단계별 상태가 셀 아래에 표시되어 현재 진행률을 확인할 수 있습니다. 셀 실행이 완료되면 총 기간 및 종료 시간이 포함된 요약이 나타나고 나중에 참조할 수 있습니다.

Synapse Notebook에서 실행되는 셀의 요약 스크린샷

Spark 진행률 표시기 사용

Synapse Notebook은 전적으로 Spark 기반입니다. 코드 셀은 서버리스 Apache Spark 풀에서 원격으로 실행됩니다. 실시간 진행률 표시줄이 있는 Spark 작업 진행률 표시기를 사용하면 작업 실행 상태를 이해할 수 있습니다.

각 작업 또는 단계에 대한 작업 수를 통해 Spark 작업의 병렬 수준을 식별할 수 있습니다. 작업(또는 단계) 이름의 링크를 선택하여 특정 작업(또는 단계)의 Spark UI로 드릴다운할 수도 있습니다.

Synapse Notebook의 Spark 진행률 표시기 스크린샷

Spark 세션 구성

세션 구성 창에서 시간 제한 기간, 실행기 수 및 현재 Spark 세션에 제공할 실행기의 크기를 지정할 수 있습니다. 구성 변경 내용을 적용하려면 Spark 세션을 다시 시작합니다. 캐시된 Notebook 변수는 모두 지워집니다.

Apache Spark 구성에서 구성을 만들거나 기존 구성을 선택할 수도 있습니다. 자세한 내용은 Apache Spark 구성 관리를 참조 하세요.

Synapse Notebook에서 세션을 구성하기 위한 창의 스크린샷

Spark 세션을 구성하기 위한 매직 명령

매직 명령을 %%configure통해 Spark 세션 설정을 지정할 수도 있습니다. 설정을 적용하려면 Spark 세션을 다시 시작합니다.

Notebook의 시작 부분에서 실행하는 %%configure 것이 좋습니다. 샘플은 다음과 같습니다. 유효한 매개 변수의 전체 목록은 GitHubLivy 정보를 참조하세요.

%%configure
{
    //You can get a list of valid parameters to configure the session from https://github.com/cloudera/livy#request-body.
    "driverMemory":"28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g", "472g"]
    "driverCores":4, // Recommended values: [4, 8, 16, 32, 64, 80]
    "executorMemory":"28g",
    "executorCores":4, 
    "jars":["abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar","wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
    "conf":{
    //Example of a standard Spark property. To find more available properties, go to https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of a customized property. You can specify the count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

매직 명령에 대한 %%configure 몇 가지 고려 사항은 다음과 같습니다.

  • 에 대해 동일한 executorMemory %%configure값을 driverMemory 사용하는 것이 좋습니다. 또한 동일한 값을 갖는 것이 driverCores executorCores 좋습니다.
  • Synapse 파이프라인에서 사용할 %%configure 수 있지만 첫 번째 코드 셀에서 설정하지 않으면 세션을 다시 시작할 수 없으므로 파이프라인 실행이 실패합니다.
  • %%configure 사용된 mssparkutils.notebook.run 명령은 무시되지만 사용된 명령은 %run <notebook> 계속 실행됩니다.
  • 본문에서 표준 Spark 구성 속성을 "conf" 사용해야 합니다. Spark 구성 속성에 대한 첫 번째 수준 참조는 지원하지 않습니다.
  • 일부 특수 Spark 속성은 본문에 "conf" 적용되지 않습니다(예"spark.driver.cores": , "spark.executor.cores", "spark.driver.memory""spark.executor.memory""spark.executor.instances").

파이프라인에서 매개 변수가 있는 세션 구성

매개 변수가 있는 세션 구성을 사용하여 매직 명령의 %%configure 값을 파이프라인 실행(Notebook 작업) 매개 변수로 바꿀 수 있습니다. 코드 셀을 준비할 %%configure 때 다음과 같은 개체를 사용하여 기본값을 재정의할 수 있습니다.

{
      "activityParameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 

다음 예제에서는 구성할 수도 있는 기본값 4"2000"

%%configure  

{ 
    "driverCores": 
    { 
        "activityParameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "activityParameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

대화형 모드에서 Notebook을 직접 실행하거나 파이프라인 Notebook 작업이 일치하는 "activityParameterName"매개 변수를 제공하지 않는 경우 Notebook은 기본값을 사용합니다.

파이프라인 실행 모드 중에 설정 탭을 사용하여 파이프라인 Notebook 작업에 대한 설정을 구성할 수 있습니다.

Synapse Notebook의 매개 변수가 있는 세션 구성 스크린샷

세션 구성을 변경하려면 파이프라인 Notebook 활동 매개 변수의 이름이 Notebook과 동일 activityParameterName 해야 합니다. 이 예제에서는 파이프라인을 실행하는 8 동안 driverCores%%configure대체하고 4000 대체합니다 livy.rsc.sql.num-rows.

매직 명령을 사용한 후 파이프라인 실행이 %%configure 실패하는 경우 Notebook의 대화형 모드에서 매직 셀을 %%configure 실행하여 더 많은 오류 정보를 얻을 수 있습니다.

Notebook에 데이터 가져오기

다음 코드 샘플과 같이 Azure Data Lake Storage Gen 2, Azure Blob Storage 및 SQL 풀에서 데이터를 로드할 수 있습니다.

Azure Data Lake Storage Gen2에서 CSV 파일을 Spark DataFrame으로 읽습니다.

from pyspark.sql import SparkSession
from pyspark.sql.types import *
account_name = "Your account name"
container_name = "Your container name"
relative_path = "Your path"
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)

df1 = spark.read.option('header', 'true') \
                .option('delimiter', ',') \
                .csv(adls_path + '/Testfile.csv')

Azure Blob Storage에서 CSV 파일을 Spark DataFrame으로 읽습니다.


from pyspark.sql import SparkSession

# Azure storage access info
blob_account_name = 'Your account name' # replace with your blob name
blob_container_name = 'Your container name' # replace with your container name
blob_relative_path = 'Your path' # replace with your relative folder path
linked_service_name = 'Your linked service name' # replace with your linked service name

blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)

# Allow Spark to access from Azure Blob Storage remotely

wasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)

spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasb_path)

df = spark.read.option("header", "true") \
            .option("delimiter","|") \
            .schema(schema) \
            .csv(wasbs_path)

기본 스토리지 계정에서 데이터 읽기

기본 스토리지 계정의 데이터에 직접 액세스할 수 있습니다. 비밀 키를 제공할 필요가 없습니다. 데이터 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 새 Notebook을 선택하여 자동으로 생성된 데이터 추출기가 있는 새 Notebook을 확인합니다.

Azure Synapse Analytics에서 파일 데이터에 액세스하기 위해 새 Spark 테이블을 여는 것을 보여 주는 스크린샷

IPython 위젯 사용

위젯은 브라우저에서 표현되는 이벤트성 Python 개체이며, 종종 슬라이더 또는 텍스트 상자와 같은 컨트롤입니다. IPython 위젯은 Python 환경에서만 작동합니다. 현재 다른 언어(예: Scala, SQL 또는 C#)에서 지원되지 않습니다.

IPython 위젯을 사용하는 단계

  1. ipywidgets Jupyter 위젯 프레임워크를 사용하도록 모듈을 가져옵니다.

    import ipywidgets as widgets
    
  2. 최상위 display 함수를 사용하여 위젯을 렌더링하거나 코드 셀의 widget 마지막 줄에 형식 식을 그대로 둡니다.

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. 셀을 실행합니다. 위젯이 출력 영역에 나타납니다.

    Synapse Notebook의 IPython 위젯 슬라이더 스크린샷

여러 display() 번 호출을 사용하여 동일한 위젯 인스턴스를 여러 번 렌더링할 수 있지만 서로 동기화된 상태로 유지됩니다.

slider = widgets.IntSlider()
display(slider)
display(slider)

Synapse Notebook의 여러 IPython 위젯 슬라이더 스크린샷

서로 독립적인 두 위젯을 렌더링하려면 두 위젯 인스턴스를 만듭니다.

slider1 = widgets.IntSlider()
slider2 = widgets.IntSlider()
display(slider1)
display(slider2)

지원되는 위젯

위젯 유형 위젯
숫자 IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntTextBoundedFloatText, IntTextFloatText
Boolean ToggleButton, , CheckboxValid
선택 사항 Dropdown, RadioButtons, Select, SelectionSlider, SelectionRangeSlider, ToggleButtonsSelectMultiple
문자열 Text,Text area, Combobox, Password, Label, HTMLHTML Math, ImageButton
재생(애니메이션) Date picker, , Color pickerController
컨테이너/레이아웃 Box, HBox, VBox, GridBox, Accordion, TabsStacked

알려진 제한 사항

  • 다음 표에는 현재 지원되지 않는 위젯과 해결 방법이 나와 있습니다.

    기능 해결 방법
    Output 위젯 대신 함수를 print() 사용하여 텍스트를 .에 stdout쓸 수 있습니다.
    widgets.jslink() 이 함수를 widgets.link() 사용하여 두 개의 유사한 위젯을 연결할 수 있습니다.
    FileUpload 위젯 해당되는 사항이 없습니다.
  • Azure Synapse Analytics에서 제공하는 전역 display 함수는 한 번의 호출(즉, display(a, b))에 여러 위젯 표시를 지원하지 않습니다. 이 동작은 IPython display 함수와 다릅니다.

  • IPython 위젯이 포함된 Notebook을 닫으면 해당 셀을 다시 실행할 때까지 위젯을 보거나 조작할 수 없습니다.

Notebook 저장

단일 전자 필기장 또는 모든 전자 필기장을 작업 영역에 저장할 수 있습니다.

  • 단일 전자 필기장 변경 내용을 저장하려면 Notebook 명령 모음에서 게시 단추를 선택합니다.

    Synapse Notebook에 변경 내용을 게시하는 단추의 스크린샷

  • 작업 영역에 모든 노트북을 저장하려면 작업 영역 명령 모음에서 모두 게시 단추를 선택합니다.

    Synapse 작업 영역의 모든 Notebook에 변경 내용을 게시하는 단추의 스크린샷

Notebook의 속성 창에서 저장할 때 셀 출력을 포함할지 여부를 구성할 수 있습니다.

저장할 때 셀 출력을 포함하기 위한 Synapse Notebook 속성 및 확인란의 스크린샷

매직 명령 사용

Synapse Notebook에서 익숙한 Jupyter 매직 명령을 사용할 수 있습니다. 현재 사용 가능한 매직 명령의 다음 목록을 검토합니다. 요구 사항에 맞게 더 많은 매직 명령을 계속 만들 수 있도록 GitHub의 사용 사례를 알려주세요.

참고 항목

Synapse 파이프라인에서는 다음 매직 명령만 지원됩니다. %%pyspark%%spark%%csharp%%sql

줄에 사용할 수 있는 매직 명령:

%lsmagic, %time, %timeit, %history, %run%load

셀에 사용할 수 있는 매직 명령:

%%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark%%csharp, %%html%%configure

게시되지 않은 전자 필기장 참조

로컬로 디버그하려는 경우 게시되지 않은 Notebook을 참조하는 것이 유용합니다. 이 기능을 사용하도록 설정하면 Notebook 실행이 웹 캐시의 현재 콘텐츠를 가져옵니다. 참조 Notebook 문이 포함된 셀을 실행하는 경우 클러스터에 저장된 버전 대신 현재 Notebook 브라우저에서 프레젠테이션 Notebook을 참조합니다. 다른 Notebook은 변경 내용을 게시(라이브 모드) 또는 커밋(Git 모드)할 필요 없이 Notebook 편집기에서 변경 내용을 참조할 수 있습니다. 이 방법을 사용하면 개발 또는 디버깅 프로세스 중에 일반적인 라이브러리의 오염을 방지할 수 있습니다.

속성 창에서 적절한 확인란을 선택하여 게시되지 않은 전자 필기장 참조를 사용하도록 설정할 수 있습니다.

게시되지 않은 Synapse Notebook 참조를 사용하도록 설정하는 확인란의 스크린샷.

다음 표에서는 사례를 비교합니다. %run과 mssparkutils.notebook.run의 동작은 동일하지만 테이블은 예제로 사용합니다%run.

케이스 사용 안 함 Enable
라이브 모드
Nb1(게시됨)
%run Nb1
게시된 Nb1 버전 실행 게시된 Nb1 버전 실행
Nb1(신규)
%run Nb1
Error 새 Nb1 실행
Nb1(이전에 게시됨, 편집됨)
%run Nb1
게시된 Nb1 버전 실행 편집된 버전의 Nb1 실행
Git 모드
Nb1(게시됨)
%run Nb1
게시된 Nb1 버전 실행 게시된 Nb1 버전 실행
Nb1(신규)
%run Nb1
Error 새 Nb1 실행
Nb1(게시되지 않음, 커밋됨)
%run Nb1
Error 커밋된 Nb1 실행
Nb1(이전에 게시됨, 커밋됨)
%run Nb1
게시된 Nb1 버전 실행 커밋된 버전의 Nb1 실행
Nb1(이전에 게시된 경우 현재 분기의 새 항목)
%run Nb1
게시된 Nb1 버전 실행 새 Nb1 실행
Nb1(게시되지 않음, 이전에 커밋됨, 편집됨)
%run Nb1
Error 편집된 버전의 Nb1 실행
Nb1(이전에 게시 및 커밋, 편집됨)
%run Nb1
게시된 Nb1 버전 실행 편집된 버전의 Nb1 실행

요약하면 다음과 같습니다.

  • 게시되지 않은 전자 필기장 참조를 사용하지 않도록 설정하면 항상 게시된 버전을 실행합니다.
  • 게시되지 않은 Notebook 참조를 사용하도록 설정하는 경우 참조 실행은 항상 Notebook UX에 표시되는 현재 버전의 Notebook을 채택합니다.

활성 세션 관리

새 세션을 시작하지 않고도 Notebook 세션을 다시 사용할 수 있습니다. Synapse Notebook에서 단일 목록에서 활성 세션을 관리할 수 있습니다. 목록을 열려면 줄임표(...)를 선택한 다음 세션 관리를 선택합니다.

활성 Synapse Notebook 세션 목록을 열기 위한 선택 항목의 스크린샷

활성 세션 창에는 Notebook에서 시작한 현재 작업 영역의 모든 세션이 나열됩니다. 목록에는 세션 정보 및 해당 Notebook이 표시됩니다. 여기서는 Notebook을 사용하여 분리, 세션 중지 및 모니터링 작업의 보기를 사용할 수 있습니다. 또한 선택한 전자 필기장을 다른 전자 필기장에서 시작한 활성 세션에 연결할 수 있습니다. 그러면 세션이 이전 전자 필기장(유휴 상태가 아닌 경우)에서 분리되고 현재 전자 필기장과 연결됩니다.

Synapse 작업 영역의 활성 세션 창 스크린샷

Notebook에서 Python 로그 사용

다음 샘플 코드를 사용하여 Python 로그를 찾고 다른 로그 수준 및 형식을 설정할 수 있습니다.

import logging

# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
    handler.setFormatter(formatter)

# Customize the log level for all loggers
logging.getLogger().setLevel(logging.INFO)

# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)

# Logger that uses the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")

# Logger that uses the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")

입력 명령 기록 보기

Synapse Notebook은 현재 세션에 대한 입력 명령 %history 기록을 인쇄하는 매직 명령을 지원합니다. %history 매직 명령은 표준 Jupyter IPython 명령과 유사하며 Notebook의 여러 언어 컨텍스트에서 작동합니다.

%history [-n] [range [range ...]]

앞의 코드 -n 에서 인쇄 실행 번호입니다. 값은 range 다음과 같습니다.

  • N: 실행된 셀의 Nth 코드를 인쇄합니다.
  • M-N: 실행된 셀로 Mth Nth 코드를 인쇄합니다.

예를 들어 첫 번째 셀에서 두 번째 실행된 셀로 입력 기록을 인쇄하려면 .를 사용합니다 %history -n 1-2.

Notebook 통합

파이프라인에 Notebook 추가

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

기존 또는 새 Synapse 파이프라인에 Notebook을 추가하기 위한 메뉴 옵션의 스크린샷

매개 변수 셀 지정

Notebook을 매개 변수화하려면 줄임표(...)를 선택하여 셀 도구 모음에서 더 많은 명령에 액세스합니다. 그런 다음, 매개 변수 셀 토글을 선택하여 을 매개 변수 셀로 지정합니다.

셀을 매개 변수 셀로 지정하기 위한 메뉴 옵션의 스크린샷

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

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

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

Azure Synapse Analytics에서 매개 변수를 할당하는 영역의 스크린샷

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

바로 가기 키 사용

Jupyter Notebook과 마찬가지로 Synapse Notebook에는 모달 사용자 인터페이스가 있습니다. 키보드는 Notebook 셀이 있는 모드에 따라 다른 작업을 수행합니다. Synapse Notebook은 코드 셀에 대해 다음 두 가지 모드를 지원합니다.

  • 명령 모드: 입력하라는 텍스트 커서가 없는 경우 셀이 명령 모드에 있습니다. 셀이 명령 모드에 있는 경우 전자 필기장을 전체적으로 편집할 수 있지만 개별 셀에는 입력할 수 없습니다. Esc 키를 선택하거나 마우스를 사용하여 셀의 편집기 영역 외부에서 선택하여 명령 모드를 입력합니다.

    Synapse Notebook의 명령 모드 스크린샷

  • 편집 모드: 셀이 편집 모드인 경우 텍스트 커서가 셀에 입력하라는 메시지를 표시합니다. Enter 키를 선택하거나 마우스를 사용하여 셀의 편집기 영역을 선택하여 편집 모드로 전환합니다.

    Synapse Notebook의 편집 모드 스크린샷

명령 모드의 바로 가기 키

작업 Synapse Notebook 바로 가기
현재 셀을 실행하고 아래 선택 Shift+Enter
현재 셀을 실행하고 아래에 삽입 Alt+Enter
현재 셀 실행 Ctrl+Enter
위 셀 선택 위로
아래 셀 선택 아래로
이전 셀 선택 K
다음 셀 선택 J
위에 셀 삽입 A
아래에 셀 삽입 B
선택한 셀 삭제 Shift+D
편집 모드로 전환 Enter

편집 모드의 바로 가기 키

작업 Synapse Notebook 바로 가기
커서를 위로 이동 위로
커서를 아래로 이동 아래로
실행 취소 Ctrl+Z
다시 실행 Ctrl+Y
주석 처리/주석 처리 제거 Ctrl+/
이전 단어 삭제 Ctrl+백스페이스
다음 단어 삭제 Ctrl+Delete
셀 시작으로 이동 Ctrl+Home
셀 끝으로 이동 Ctrl+End
한 단어 왼쪽으로 이동 Ctrl+왼쪽
한 단어 오른쪽으로 이동 Ctrl+오른쪽
모두 선택 Ctrl+A
들여쓰기 Ctrl+]
내어쓰기 Ctrl+[
명령 모드로 전환 Esc