작업 공간에서 노트북 실행 및 예약하기¶
작업 공간에서 노트북 예약하기¶
작업 공간의 노트북이 반복적인 간격으로 실행되도록 예약하여 데이터 과학 및 ML 워크플로를 자동화할 수 있습니다. 예약된 실행은 Snowflake 작업을 사용하고 모든 종속성이 있는 노트북을 일관된 하향식 순서로 실행합니다.
참고
현재 공유 작업 공간의 노트북에는 예약이 지원되지 않습니다.
필수 권한¶
노트북을 예약하려면 일정을 만드는 데 사용되는 역할에 다음 권한 및 권한 부여가 있어야 합니다.
계정 수준
TASK에 대한 EXECUTE ACCOUNT 권한 역할이 예약된 노트북과 연결된 작업을 실행할 수 있도록 허용합니다.
스키마 수준
CREATE TASK: 기본 Snowflake 작업을 생성하는 데 필요합니다.
대상 스키마에 대한 USAGE 권한: 작업 메타데이터 및 노트북 프로젝트 오브젝트를 저장하는 데 필요합니다.
컴퓨팅 및 웨어하우스 권한
노트북 실행에 사용되는 컴퓨팅 풀에 대한 USAGE 권한.
노트북 내부의 SQL 셀에 사용되는 쿼리 웨어하우스에 대한 USAGE 및 MONITOR 권한.
노트북용 외부 액세스 통합(EAIs)에 대한 USAGE 권한
노트북에서 사용하는 모든 EAI에 대한 USAGE 권한.
노트북 예약하기¶
|sf-web-interface|에서 노트북을 예약하려면 다음 단계를 따릅니다.
탐색 메뉴에서 Projects » Notebooks 를 선택합니다.
새로운 노트북을 생성하거나 예약할 기존 노트북을 엽니다.
노트북 편집기의 오른쪽 상단에 있는 :ui:`Schedule`을 선택합니다.
노트북의 첫 번째 작업인 경우 예약 버튼은 캘린더 아이콘입니다.
예약이 이미 있는 경우 아이콘은 시계가 있는 캘린더입니다.
Create Schedule 을 선택합니다.
Schedule a Notebook Task 대화 상자에 다음 정보를 입력합니다.
기본 설정
작업 이름: 예약된 작업의 고유한 이름입니다. 기본 이름은 :code:`{notebook-name}_task_#`이지만 필요한 경우 업데이트할 수 있습니다.
소유자 역할: 작업이 실행되는 Snowflake 역할입니다. 예약된 노트북에서 수행되는 모든 작업을 실행하는 데 필요한 권한이 있는 역할을 선택합니다. 이 역할에는 다음 권한이 있어야 합니다.
노트북에서 사용하는 데이터베이스 오브젝트 읽기/쓰기 권한.
웨어하우스, 컴퓨팅 풀, 통합에 대한 액세스 권한.
작업 및 프로젝트 오브젝트 생성/업데이트 권한.
위치: 작업 오브젝트 및 관련 노트북 프로젝트 오브젝트가 생성될 데이터베이스 및 스키마입니다. 역할에 관련 권한에 대한 CREATE, TASK, USAGE 권한이 있는 스키마를 선택합니다.
빈도: 노트북을 실행해야 하는 빈도입니다. 다음 중에서 선택합니다. 매시간, 매일, 매주, 매월 또는 사용자 지정(Cron 예약). 모든 실행 시간은 현지 타임존을 사용합니다.
고급 설정
프로젝트 이름: Snowflake가 작업 실행을 위해 생성하는 노트북의 프로젝트 컨테이너에 대한 고유한 이름입니다. 편집하지 않는 경우 Snowflake가 기본 이름을 제공합니다.
매개 변수(선택 사항): 런타임에 시 노트북에 전달된 키-값 매개 변수이며, 명령줄 인자로 표시됩니다(
sys.argv). 매개 변수는 날짜, 환경 플래그, 임계값 또는 모델 버전을 전달하는 데 유용합니다.
런타임 베리언트
CPU: CPU Container Runtime 환경을 사용하며, CPU 컴퓨팅 풀(예: 자동으로 프로비저닝된
SYSTEM_COMPUTE_POOL_CPU)에서 실행됩니다.GPU: GPU 가속 라이브러리가 포함된 GPU Container Runtime 환경을 사용하며, GPU 컴퓨팅 풀(예:
SYSTEM_COMPUTE_POOL_GPU)에서 실행됩니다.Python 버전: 작업 실행 중에 사용되는 Python 버전입니다.
런타임 버전: 기본 Container Runtime 이미지입니다. 올바른 런타임 버전을 선택하면 개발 및 예약된 실행 간에 노트북이 일관되게 실행됩니다.
컴퓨팅 풀: 노트북 작업을 실행할 컴퓨팅 풀입니다. 예약된 실행 시점에 컴퓨팅 풀에 용량(사용 가능한 노드)이 있는지 확인합니다. 예약된 실행이 실패하지 않도록 방지하려면 전용 컴퓨팅 풀을 사용하여 다른 SPCS 서비스가 전체 용량을 차지하지 않도록 하는 것이 좋습니다.
쿼리 웨어하우스: 노트북 내부의 모든 SQL 쿼리에 사용되는 Snowflake 웨어하우스입니다.
외부 액세스 통합(선택 사항): 노트북에서 사용할 수 있는 Snowflake 외부 액세스 통합(EAIs)을 정의합니다. 노트북에 외부 APIs, 서드 파티 서비스 또는 Snowflake 내부 스테이지 외부의 클라우드 저장소가 필요한 경우 EAIs가 필요합니다. EAIs가 나열되지 않은 경우 선택한 역할에는 통합에 대한 소유권 또는 권한이 없습니다.
예약 미리 보기를 검토하고 :ui:`Create`를 선택합니다.
사용자에게 필요한 권한이 부족하여 작업이 실패하는 경우 대화 상자는 열린 상태로 유지되며 관련 오류 메시지가 표시됩니다.
예약된 노트북 실행 보기¶
다음 두 위치에서 예약된 작업을 볼 수 있습니다.
노트북에서
탐색 메뉴에서 Projects » Notebooks 를 선택합니다.
예약된 노트북을 엽니다.
노트북 편집기의 오른쪽 상단에 있는 :ui:`Schedule`을 선택합니다. 이 팝오버에는 다음과 같은 정보가 표시됩니다.
이 노트북에 대해 예약된 모든 실행. 예약된 실행을 보거나 상호 작용하려면 예약과 프로젝트 오브젝트가 생성된 데이터베이스 및 스키마에 대한 액세스 권한이 있는 역할을 사용해야 합니다.
다음으로 예약된 실행 시간.
과거 실행의 상태. 상태 표시기를 마우스로 가리키면 쿼리 ID, 마지막 실행 시간, 기간 및 상태와 같은 세부 정보를 볼 수 있습니다.
작업 메뉴에서
실행 기록 열기: 상태, 기간, 결과를 포함하여 모든 과거 실행을 보여주는 노트북의 프로젝트 오브젝트를 엽니다. 실행 결과를 선택하면 실행된 노트북이 출력과 함께 열립니다.
참고
Airflow에 의해 트리거된 노트북 실행의 실행 기록을 보려면 Airflow를 실행하는 동일한 사용자를 사용하여 |sf-web-interface|에 로그인합니다.
예약된 노트북 작업에 대한 업데이트 배포¶
노트북을 편집한 후에는 예약된 실행에서 업데이트된 버전을 사용하기 전에 변경 사항을 배포해야 합니다. 배포는 재현성을 보장하고 예약된 작업이 마지막으로 배포된 코드와 다른 코드를 실행하지 못하게 방지합니다. 노트북에 배포가 필요한 변경 사항이 있는 경우 예약(캘린더) 아이콘에 시계 표시기가 표시됩니다.
코드 또는 셀을 수정한 후 아이콘은 배포되지 않은 변경 사항이 있음을 나타냅니다.
Deployed Changes 을 선택합니다.
그런 다음 Snowflake는 연결된 노트북 프로젝트 오브젝트를 업데이트하며, 해당 노트북에 대해 예약된 모든 작업은 다음 실행을 위해 새로 배포된 버전을 사용합니다.
오브젝트 탐색기에서 노트북 프로젝트 오브젝트 찾기¶
예약된 각 노트북은 배포된 코드, 실행 기록, 아티팩트를 저장하는 노트북 프로젝트 오브젝트를 자동으로 생성합니다.
|sf-web-interface|에서 노트북 프로젝트 오브젝트를 찾으려면 다음 단계를 따릅니다.
탐색 메뉴에서 Catalog » Database Explorer 를 선택합니다.
Navigate to Database » Schema » Notebook Project Objects to view all project objects in that schema.
또는 다음을 수행할 수 있습니다.
노트북의 실행 기록 보기¶
실행 중에 단계가 실패하는 경우 노트북은 부분적이거나 일관되지 않은 다운스트림 결과를 방지하기 위해 실행을 중지합니다.
실행 기록을 보려면 다음 단계를 따릅니다.
탐색 메뉴에서 Projects » Notebooks 를 선택합니다.
실행 기록을 검토하려는 노트북을 엽니다.
노트북 편집기의 오른쪽 상단에서 예약(캘린더) 아이콘을 선택합니다.
드롭다운 메뉴에서 View run history 를 선택합니다.
:ui:`Run History`는 노트북의 프로젝트 오브젝트에 대한 시작 및 종료 시간, 실행 상태, 오류 세부 정보(예: 로그 및 메트릭)를 표시합니다.
작업을 사용하여 노트북 예약하기¶
탐색 메뉴에서 Projects » Workspaces 를 선택합니다.
SQL 파일/워크시트에서 다음 명령을 실행합니다.
CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name> WAREHOUSE = <warehouse_name> SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles' -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone> AS -- Execute a notebook stored within a Snowflake project. EXECUTE NOTEBOOK PROJECT = '<database_name>.<schema_name>.<project_name>' -- Notebook file to run MAIN_FILE = '<notebook_file_name>.ipynb' -- Compute pool used to run the notebook COMPUTE_POOL = '<compute_pool_name>' -- Runtime environment (Python version, CPU/GPU, etc.) RUNTIME = '<runtime_version>' -- Warehouse used for SQL statements inside the notebook QUERY_WAREHOUSE = <query_warehouse_name>;
이 작업을 생성한 후 다음 명령을 실행하여 예약을 활성화합니다.
ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;