Snowflake Notebooks 설정¶
Snowflake Notebooks 는 데이터베이스의 스키마 내에 저장된 일급 개체입니다. 웨어하우스와 컨테이너라는 두 가지 컴퓨팅 아키텍처에서 실행할 수 있습니다. 이 도움말 항목에서는 계정 관리자로 계정을 설정하고 Snowflake Notebooks 사용을 시작하는 단계를 설명합니다.
관리자 설정¶
Snowflake Notebooks 을 사용하여 조직을 설정하려면 다음 단계를 수행합니다.
계정 및 배포 요구 사항을 검토 합니다.
계정 및 배포 요구 사항 검토하기¶
*.snowflake.app
이 콘텐츠 필터링 시스템을 포함한 네트워크의 허용 목록에 있는지, Snowflake에 연결할 수 있는지 확인하십시오. 이 도메인이 허용 목록에 있으면 앱이 아무런 제한 없이 Snowflake 서버와 통신할 수 있습니다.
또한 Snowflake 백엔드 연결 문제를 방지하려면 네트워크 구성에서 WebSockets이 차단되어 있지 않은지 확인합니다.
라이브러리를 가져오려면 Anaconda 약관에 동의합니다.¶
Snowflake 내부에서 Anaconda가 제공하는 패키지를 처음 사용하기 전에 먼저 외부 제공 서비스 약관 에 동의해야 합니다.
참고
약관에 동의하려면 ORGADMIN 역할을 사용해야 합니다. Snowflake 계정에 대해 외부 서비스 약관 을 한 번만 수락하면 됩니다. ORGADMIN 역할이 없는 경우 계정에서 ORGADMIN 역할 활성화하기 섹션을 참조하십시오.
Snowsight 에 로그인합니다.
Admin » Billing & Terms 를 선택합니다.
Anaconda 섹션에서 Enable 을 선택합니다.
Anaconda Packages 대화 상자에서 링크를 클릭하여 외부 제공 서비스 약관 페이지 를 검토하십시오.
약관에 동의하면 Acknowledge & Continue 를 선택합니다.
외부 서비스 약관 에 동의하려고 할 때 오류가 발생하면 이름, 성 또는 이메일 주소와 같은 사용자 프로필 정보가 누락되었기 때문일 수 있습니다.
리소스 생성 및 권한 부여하기¶
노트북을 생성하려면 역할에 다음 리소스에 대한 권한이 필요합니다.
위치에 대한 CREATE NOTEBOOK 권한
컴퓨팅 리소스에 대한 USAGE 권한
(선택 사항) 외부 액세스 통합(EAIs)에 대한 USAGE 권한
이러한 리소스를 만들고 권한을 부여하는 스크립트 예제는 Notebooks 설정용 템플릿 섹션을 참조하십시오.
location¶
위치는 노트북 오브젝트가 저장된 위치입니다. 최종 사용자는 자신의 역할에 액세스 권한이 있는 모든 데이터베이스 및 스키마를 쿼리할 수 있습니다.
컨텍스트를 다른 데이터베이스 또는 스키마로 변경하려면 SQL 셀에서 USE DATABASE 또는 USE SCHEMA 명령을 사용합니다.
컨테이너 런타임에서 노트북을 만드는 역할에는 스키마에 대한 CREATE SERVICE 권한도 필요합니다.
권한 |
오브젝트 |
---|---|
USAGE |
데이터베이스 |
USAGE |
스키마 |
CREATE NOTEBOOK |
스키마 |
CREATE SERVICE |
스키마 |
스키마를 소유한 역할은 자동으로 해당 스키마 내에서 노트북을 만들 수 있는 권한을 갖게 되는데, 소유자는 노트북을 포함한 모든 유형의 오브젝트를 만들 수 있기 때문입니다.
권한 |
오브젝트 |
---|---|
USAGE |
데이터베이스 |
OWNERSHIP |
스키마 |
컴퓨팅 리소스¶
웨어하우스 런타임에서 노트북의 엔진과 노트북에서 작성된 코드의 Python 프로세스는 모두 노트북 웨어하우스에서 실행되지만, SQL 쿼리와 Snowpark 푸시다운 쿼리는 쿼리 웨어하우스에서 실행됩니다. 노트북의 소유자 역할을 하려면 두 웨어하우스 모두에 USAGE 권한이 필요합니다.
노트북이 컨테이너 런타임에서 실행되는 경우, 이 역할에는 노트북 웨어하우스 대신 컴퓨팅 풀에 대한 USAGE 권한이 필요합니다. 컴퓨팅 풀은 Snowflake에서 관리하는 CPU 기반 또는 GPU 기반 가상 머신입니다. 컴퓨팅 풀을 만들 때는 각 노트북을 실행하려면 하나의 전체 노드가 필요하므로 MAX_NODES 매개 변수를 1보다 크게 설정하십시오. 자세한 내용은 Snowpark Container Services: 컴퓨팅 풀 작업하기 섹션을 참조하십시오.
권한 |
오브젝트 |
---|---|
USAGE |
노트북 웨어하우스 또는 컴퓨팅 풀 |
USAGE |
쿼리 웨어하우스 |
외부 액세스 통합(선택 사항)¶
특정 역할이 외부 네트워크에 액세스할 수 있도록 허용하는 경우 ACCOUNTADMIN 역할을 사용하여 외부 액세스 통합(EAIs)에 대한 USAGE 권한을 설정하고 부여하십시오. EAIs 특정 외부 엔드포인트에 대한 액세스를 허용하여 팀이 데이터 및 모델을 다운로드하고, API 요청 및 응답을 보내고, 다른 서비스에 로그인하는 등의 작업을 수행할 수 있도록 합니다. 컨테이너 런타임에서 실행되는 노트북의 경우, EAIs 에서 PyPi 및 Hugging Face와 같은 리포지토리에서 패키지를 설치할 수 있습니다.
노트북에 EAI를 설정하는 방법에 대한 자세한 내용은 Snowflake Notebooks 에 대한 외부 액세스 설정 섹션을 참조하십시오.
권한 |
오브젝트 |
---|---|
USAGE |
외부 액세스 통합 |
Notebooks 설정용 템플릿¶
노트북은 역할 기반 생성 및 소유 권한이 있는 오브젝트이므로, 조직과 팀의 필요에 맞게 Notebooks 기능에 대한 액세스를 구성할 수 있습니다. 다음은 몇 가지 예입니다.
모든 사람이 특정 위치에 노트북을 만들 수 있도록 허용하기¶
다음 단계에서는 데이터베이스와 스키마에 사용 권한을 부여해 특정 위치에 노트북을 만들기 위한 액세스를 구성하는 방법을 간략하게 설명합니다. 또는 이러한 액세스 권한 부여가 필요 없는 비공개 노트북을 사용 설정할 수도 있습니다. 비공개 노트북에 대한 자세한 내용은 비공개 노트북 섹션을 참조하십시오.
<database> 및 <database.schema>를 노트북을 생성할 특정 데이터베이스와 스키마로 바꿉니다.
----------------------------------
-- Location Setup --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;
-- For Notebooks on Container runtime, run the following:
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;
----------------------------------
-- Compute Resource Setup --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;
-- For Notebooks on Container runtime:
CREATE COMPUTE POOL CPU_XS
MIN_NODES = 1
MAX_NODES = 15
INSTANCE_FAMILY = CPU_X64_XS;
CREATE COMPUTE POOL GPU_S
MIN_NODES = 1
MAX_NODES = 5
INSTANCE_FAMILY = GPU_NV_S;
GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE PUBLIC;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE PUBLIC;
-------------------------------------
-- Optional: External Access --
-------------------------------------
-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');
CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;
GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
전담 역할 만들기¶
특정 사용자만 노트북을 만들게 하려면(아직 스키마를 소유하지 않았다고 가정할 때) 액세스 제어를 위한 전용 역할을 만들 수 있습니다. 예:
CREATE ROLE notebooks_rl;
ROLE notebook_rl을 특정 사용자에게 부여합니다. 그런 다음 위의 스크립트를 사용하여 리소스를 만들고 이 역할에 권한을 부여합니다(ROLE PUBLIC 을 ROLE notebook_rl로 바꿈).
노트북 엔진¶
노트북 엔진(“커널”)과 Python 프로세스는 노트북 웨어하우스에서 실행됩니다. Snowflake는 크레딧 소모를 최소화하기 위해 X-Small 웨어하우스로 시작할 것을 권장합니다.
노트북을 사용하는 동안(예: 코드 편집, 실행, 재정렬, 셀 삭제) 또는 노트북이 유휴 시간 제한 설정 내에서 계속 활동 중인 경우, 노트북 엔진이 활성화되어 있고 노트북 세션이 사용 중임을 나타내는 EXECUTE NOTEBOOK 쿼리가 계속 실행됩니다. 이 쿼리의 상태는 Query history 에서 확인할 수 있습니다. EXECUTE NOTEBOOK 이 실행되는 동안에는 노트북 웨어하우스도 실행됩니다. EXECUTE NOTEBOOK 이 완료되면 웨어하우스에서 실행 중인 다른 쿼리나 작업이 없는 경우 자동 일시 중단 정책에 따라 종료됩니다.
EXECUTE NOTEBOOK 쿼리를 종료(노트북 세션 종료)하려면 다음 단계를 따르십시오.
Active 를 선택하거나 Active 드롭다운 메뉴에서 End session 을 선택합니다.
Query history 에서 해당 EXECUTE NOTEBOOK 쿼리를 찾아 Cancel query 를 선택합니다.
유휴 시간 설정에 따라 노트북이 비활성으로 인해 시간 초과되도록 합니다. 노트북 웨어하우스의 STATEMENT_TIMEOUT_IN_SECONDS 및 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS 매개 변수가 작은 값으로 설정되어 있으면 사용자 활동과 관계없이 노트북이 빠르게 종료되거나 시작되지 않을 수 있습니다.
쿼리¶
SQL 및 Snowpark 쿼리(예: 세션.sql)는 온디맨드에 사용되는 쿼리 웨어하우스로 푸시됩니다. SQL 및 Snowpark 쿼리 실행이 완료되면 노트북 외부에서 다른 작업이 실행되고 있지 않으면 쿼리 웨어하우스가 일시 중단됩니다. 쿼리 성능 요구 사항에 가장 적합한 웨어하우스 크기를 선택합니다. 예를 들어, 대규모 SQL 쿼리를 실행하거나 더 큰 웨어하우스가 필요한 계산 집약적 작업을 수행하려면 Snowpark Python을 사용해야 할 수 있습니다. 높은 메모리 사용량이 필수 작업의 경우 Snowpark에 최적화된 웨어하우스 를 사용하는 것이 좋습니다.
쿼리 웨어하우스는 Notebook Settings 에서 변경할 수 있습니다. 또는 노트북의 SQL 셀에서 다음 명령을 실행해 현재 노트북 세션의 모든 후속 쿼리에 대한 쿼리 웨어하우스를 변경할 수 있습니다.
USE WAREHOUSE <warehouse_name>;

유휴 시간 및 재접속¶
각 노트북에는 기본값이 30분인 IDLE_AUTO_SHUTDOWN_TIME_SECONDS 라는 유휴 시간 속성이 있습니다. Snowsight 에서 각 노트북의 유휴 시간을 구성할 수 있습니다.
Snowsight 에 로그인합니다.
Projects » Notebooks 를 선택합니다.
Notebook settings 를 선택합니다.
새로운 유휴 시간을 적용하려면 세션을 수동으로 다시 시작해야 합니다.
코드 편집, 셀 실행, 셀 재정렬, 셀 삭제 등 사용자 활동이 없을 때마다 유휴 시간이 누적됩니다. 활동을 재개할 때마다 유휴 시간이 초기화됩니다. 유휴 시간이 시간 제한 설정에 도달하면 노트북 세션이 자동으로 종료됩니다.
유휴 시간 제한 전에 페이지를 새로 고치거나 Snowsight 의 다른 부분을 방문하거나 컴퓨터를 종료하거나 절전 모드로 전환하더라도 노트북 세션은 유휴 시간 제한 기간에 도달할 때까지 활성 상태로 유지됩니다. 같은 노트북을 다시 열면 모든 세션 상태와 변수가 유지된 상태에서 동일한 세션에 다시 연결되므로 작업을 원활하게 이어갈 수 있습니다. 단, Streamlit 위젯의 상태는 유지되지 않는다는 점에 유의하십시오.
동일한 노트북을 실행하는 각 사용자는 각자의 독립적인 세션을 갖게 됩니다. 서로 간섭하지 않습니다.
비용 최적화를 위한 권장 사항¶
계정 관리자는 노트북 운영 비용을 관리하기 위해 다음 권장 사항을 고려하십시오.
팀에게 노트북 세션을 실행하는 전용 ‘노트북 웨어하우스’로 동일한 웨어하우스(X-Small 권장)를 사용해 동시성을 높이도록 요청하십시오. 너무 많은 노트북을 동시에 실행할 경우 세션 시작 속도가 느려지거나(웨어하우스에 큐에 대기) 메모리 부족 오류가 발생할 수 있다는 점에 유의하십시오.
팀에서 STATEMENT_TIMEOUT_IN_SECONDS 값이 낮은 웨어하우스를 사용하여 노트북을 실행하도록 허용하십시오. 이 웨어하우스 매개 변수는 노트북 세션을 포함해 모든 쿼리의 지속 시간을 제어합니다. 예를 들어, 매개 변수를 10분으로 설정하면 해당 시간 동안 사용자가 노트북 세션에서 활동 중인지 여부에 관계없이 노트북 세션이 최대 10분 동안 실행될 수 있습니다.
팀원들이 세션에서 적극적으로 작업할 의사가 없을 때는 노트북 세션을 종료하도록 요청하십시오.
장시간 세션을 실행할 필요가 없는 경우 팀에 유휴 시간 제한 설정을 최소화(예: 15분으로)하도록 요청하십시오.
또는 지원 티켓을 제기하여 전체 계정에 적용되는 유휴 시간 기본값을 설정할 수 있습니다. 이 값은 노트북 소유자가 노트북 수준에서 재정의할 수 있습니다.
비공개 노트북 사용을 위한 전제 조건¶
Snowsight 에서 사용자 소유의 비공개 노트북을 만들 수 있습니다. 비공개 노트북을 만들고 사용하기 전에 ACCOUNTADMIN 역할이 있는 관리자는 다음 작업을 완료해야 합니다.
계정 수준 또는 특정 사용자에 대해 개인 데이터베이스 기능을 사용 설정합니다. 개인 데이터베이스는 노트북이 개인 노트북처럼 작동할 수 있게 해주는 Snowflake 오브젝트입니다. 이 작업을 완료하는 방법에 대한 자세한 내용은 다음 섹션을 참조하십시오.
필요한 경우, 비공개 노트북을 만들 사용자를 위해 보조 역할을 적절히 설정하십시오. 최신 BCR 번들의 활성화 여부에 따라 달라질 수 있는 이 작업을 완료하는 방법에 대한 자세한 내용은 개인 노트북 사용자의 모든 보조 역할 활성화하기 섹션을 참조하십시오.
중요
관리자가 개인 데이터베이스를 활성화한 후 영향을 받는 사용자는 로그아웃했다가 다시 로그인해야 새 사용자 인터페이스 동작을 확인할 수 있습니다.
비공개 노트북에 대한 자세한 내용은 비공개 노트북 섹션을 참조하십시오.
계정에 대한 비공개 노트북 사용 및 사용 중지하기¶
Snowflake 계정에서 비공개 노트북을 사용하려면 ENABLE_PERSONAL_DATABASE 매개 변수를 TRUE 로 설정하는 ALTER ACCOUNT 명령을 사용하십시오. 예:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
다른 계정은 변경할 수 없으며 현재 계정만 변경할 수 있습니다. 이 명령에 대한 자세한 내용은 ALTER ACCOUNT 섹션을 참조하십시오.
계정에 대해 비공개 노트북을 비활성화해야 하는 경우, 동일한 명령을 실행하되 매개 변수를 FALSE 로 설정하십시오. 예:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
ENABLE_PERSONAL_DATABASE 매개 변수의 현재 값을 확인하려면 다음 SHOW PARAMETERS 명령을 실행합니다.
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
관리자가 계정에 매개 변수를 활성화한 후에는 사용자가 로그아웃했다가 다시 로그인해야 합니다. 그런 다음 사용자는 USE DATABASE 명령을 실행하여 개인 데이터베이스가 생성되었는지 확인할 수 있습니다.
USE DATABASE USER$;
USER$
접두사 뒤에 로그인 사용자 이름을 지정하여 현재 사용자의 이름을 명시적으로 지정할 수 있습니다. 예:
USE DATABASE USER$bobr;
이 명령은 현재 사용자의 개인 데이터베이스가 존재할 때 성공합니다. USE DATABASE 명령은 개인 데이터베이스가 존재하지 않거나(필수 작업이 완료되지 않았기 때문에) 현재 사용자의 개인 데이터베이스가 아닌 경우 오류를 반환합니다. 예를 들어, jlap
이 현재 사용자가 아닌 경우 다음 메시지가 표시됩니다.
USE DATABASE USER$jlap;
ERROR: Insufficient privileges to operate on database 'USER$JLAP'
참고
개인 데이터베이스에는 특정 소유자가 없으며 시스템 소유 오브젝트입니다.
개인 데이터베이스를 직접 만들 수는 없습니다.
계정이 비공개 노트북용으로 활성화되면 기존 사용자의 경우 백그라운드에서 ‘느리게’ 생성됩니다. 사용자가 명시적으로 USER$ 이름 확인을 사용하는 명령을 처음 실행하면 개인 데이터베이스가 생성됩니다. 예를 들어, USE DATABASE USER$ 명령을 실행하면 현재 사용자의 개인 데이터베이스가 지연 생성됩니다.
개별 사용자의 비공개 노트북 활성화 및 비활성화하기¶
관리자는 계정의 모든 사용자가 아닌 특정 사용자에게만 개인 데이터베이스 액세스 권한을 부여할 수 있습니다. 특정 사용자에 대한 액세스를 활성화하려면 ALTER USER 명령을 사용하여 해당 사용자에 대해 ENABLE_PERSONAL_DATABASE 매개 변수를 TRUE 로 설정합니다. 예를 들어, 세 명의 사용자에 대한 액세스를 사용 설정합니다.
ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
계정 수준에서 개인 데이터베이스를 사용하도록 설정한 경우 필요에 따라 개별 사용자의 개인 데이터베이스를 비활성화할 수 있습니다. 사용자를 비활성화하려면 동일한 명령을 실행하되 매개 변수를 FALSE 로 설정합니다. 예:
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
사용자가 jlap
명령에 USER$
접두사를 지정하면 개인 데이터베이스가 존재하지 않으므로 명령이 실패합니다.
NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.
참고
특정 사용자에 대해 개인 데이터베이스를 활성화했다가 비활성화하면 사용자는 생성된 개인 데이터베이스에 액세스할 수 없게 되지만 데이터베이스는 계속 존재합니다.
데이터를 추가하여 노트북 사용 시작하기¶
Snowflake Notebooks 사용을 시작하기 전에 Snowflake에 데이터를 추가합니다.
Snowflake에 데이터를 추가하는 방법은 여러 가지가 있습니다.
웹 인터페이스를 사용하여 CSV 파일의 데이터를 테이블에 추가합니다. 웹 인터페이스를 사용하여 데이터 로딩 중 섹션을 참조하십시오.
외부 클라우드 저장소에서 데이터 추가:
Amazon S3에서 데이터를 로드하려면 Amazon S3에서 대량 로드 섹션을 참조하십시오.
Google Cloud Storage에서 데이터를 로드하려면 Google Cloud Storage에서 대량 로드하기 섹션을 참조하십시오.
Microsoft Azure에서 데이터를 로드하려면 Microsoft Azure에서 대량 로드하기 섹션을 참조하십시오.
프로그래밍 방식으로 대량으로 데이터를 추가합니다. 로컬 파일 시스템에서 대량 로드하기 섹션을 참조하십시오.
다른 방법으로 데이터를 추가할 수도 있습니다. 자세한 내용은 데이터 로딩 개요 섹션을 참조하십시오.