Snowpark Submit 참조

|spsubmit|을 사용하면 익숙한 Spark 의미 체계를 사용하여 Snowflake에서 비대화형 배치 지향 Spark 워크로드를 실행할 수 있습니다.

참고

:command:`snowpark-submit`은 command:`spark-submit`과 동일한 기능을 대부분 지원합니다. 그러나 일부 기능은 Snowflake에서 Spark 워크로드를 실행할 때 필요하지 않아 생략되었습니다.

구문

snowpark-submit
  --name <application_name>
  --exclude-packages <package_to_exclude> [, <package_to_exclude>, ...]
  --py-files <files_to_place_on_path>
  --conf <spark_config_property=value> [<spark_config_property=value> ...]
  --properties-file <path_to_properies_file>
  --help, -h
  --verbose, -v
  --version
  --account <snowflake_account>
  --user <snowflake_user>
  --authenticator <snowflake_authenticator>
  --token-file-path <snowflake_token_file_path>
  --password <snowflake_password>
  --role <snowflake_role>
  --host <snowflake_host>
  --database <snowflake_database_name>
  --schema <snowflake_schema_name>
  --warehouse <snowflake_warehouse_name>
  --compute-pool <snowflake_compute_pool>
  --comment <comment>
  --snowflake-stage <snowflake_stage>
  --external-access-integrations <snowflake_external_access_integrations> [, ...]
  --snowflake-log-level <snowflake_log_level>
  --snowflake-workload-name <snowflake_workload_name>
  --snowflake-connection-name <snowflake_connection_name>
  --workload-status
  --display-logs
  --wait-for-completion
  <application.jar | application.py> [<application_arguments>]
Copy

인자

application.jar | application.py

애플리케이션과 종속성을 포함하는 파일의 경로입니다.

[application arguments]

애플리케이션의 기본 메서드에 전달된 애플리케이션별 인자입니다.

선택 사항

--name NAME

애플리케이션의 이름입니다.

--exclude-packages [EXCLUDE_PACKAGES ...]

:code:`–packages`에 제공된 종속성을 확인하는 동안 종속성 충돌을 방지하기 위해 제외할 groupId:artifactId 쌍의 쉼표로 구분된 목록입니다.

--py-files PY_FILES

Python 앱용 PYTHONPATH에 배치할 .zip, .egg 또는 .py 파일의 쉼표로 구분된 목록입니다.

--conf [PROP=VALUEPROP=VALUE ...]

임의의 Spark 구성 속성입니다.

--properties-file FILE

추가 속성을 로드할 파일의 경로입니다. 지정되지 않은 경우 conf/spark-defaults.conf를 찾습니다.

--help, -h

도움말 메시지를 표시한 후 종료합니다.

--verbose, -v

추가 디버그 출력을 인쇄합니다.

--version

현재 Spark 버전을 인쇄합니다.

Snowflake 고유 옵션

--account SNOWFLAKE_ACCOUNT

사용할 Snowflake 계정입니다. 지정된 경우 connections.toml 파일의 계정을 재정의합니다.

--user SNOWFLAKE_USER

사용할 Snowflake 사용자입니다. 지정된 경우 connections.toml 파일의 사용자를 재정의합니다.

--authenticator SNOWFLAKE_AUTHENTICATOR

Snowflake 로그인용 인증자입니다. 지정된 경우 connections.toml 파일의 인증자를 재정의합니다. 지정되지 않은 경우 사용자 비밀번호 인증자로 기본 설정됩니다.

--token-file-path SNOWFLAKE_TOKEN_FILE_PATH

Snowflake용 OAuth 토큰이 포함된 파일의 경로입니다. 지정된 경우 connections.toml 파일의 토큰 파일 경로를 재정의합니다.

--password SNOWFLAKE_PASSWORD

Snowflake 사용자의 비밀번호입니다. 지정된 경우 connections.toml 파일의 비밀번호를 재정의합니다.

--role SNOWFLAKE_ROLE

사용할 Snowflake 역할입니다. 지정된 경우 connections.toml 파일의 역할을 재정의합니다.

--host SNOWFLAKE_HOST

Snowflake 배포용 호스트입니다. 지정된 경우 connections.toml 파일의 호스트를 재정의합니다.

--database SNOWFLAKE_DATABASE_NAME

세션에서 사용할 Snowflake 데이터베이스입니다. 지정된 경우 connections.toml 파일의 데이터베이스를 재정의합니다.

--schema SNOWFLAKE_SCHEMA_NAME

세션에서 사용할 Snowflake 스키마입니다. 지정된 경우 connections.toml 파일의 스키마를 재정의합니다.

--warehouse SNOWFLAKE_WAREHOUSE_NAME

세션에서 사용할 Snowflake 웨어하우스입니다. 지정된 경우 connections.toml 파일의 웨어하우스를 재정의합니다.

--compute-pool SNOWFLAKE_COMPUTE_POOL

제공된 워크로드를 실행하기 위한 Snowflake 컴퓨팅 풀입니다. 지정된 경우 connections.toml 파일의 컴퓨팅 풀을 재정의합니다.

--comment COMMENT

워크로드와 관련된 메시지입니다. Snowflake에서 워크로드를 식별하는 데 사용할 수 있습니다.

--snowflake-stage SNOWFLAKE_STAGE

워크로드 파일이 업로드되는 Snowflake 스테이지입니다.

--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]

워크로드에 필요한 Snowflake 외부 액세스 통합입니다.

--snowflake-log-level SNOWFLAKE_LOG_LEVEL

Snowflake 이벤트 테이블의 로그 수준('INFO', 'ERROR', 'NONE')입니다(기본값: INFO).

--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAME

Snowflake에서 실행할 워크로드의 이름입니다.

--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME

기본 구성으로 사용할 connections.toml 파일의 연결 이름입니다. 명령줄 인자는 connections.toml 파일의 모든 값을 재정의합니다.

--workload-status

자세한 워크로드 상태를 인쇄합니다.

--display-logs

:code:`–workload-status`가 지정된 경우 애플리케이션 로그를 콘솔에 인쇄할지 여부를 나타냅니다.

--wait-for-completion

클러스터 모드에 지정된 경우 차단 모드에서 워크로드를 실행한 후 완료될 때까지 기다립니다.

--requirements-file REQUIREMENTS_FILE

워크로드를 실행하기 전에 설치할 Python 패키지 종속성이 포함된 requirements.txt 파일의 경로입니다. PyPI용 외부 액세스 통합이 필요합니다.

--wheel-files WHEEL_FILES

Python 워크로드를 실행하기 전에 설치할 .whl 파일의 쉼표로 구분된 목록입니다. PyPI에서 사용할 수 없는 비공개 종속성에 사용됩니다.

일반적인 옵션의 예제

애플리케이션 배포

Snowflake의 Snowpark Container Services(SPCS)는 Spark 애플리케이션을 실행하기 위한 기본 인프라입니다. 사전에 SPCS 컴퓨팅 풀을 만들어야 합니다.

기본 Python 애플리케이션

클러스터 모드에서 기본 Python 애플리케이션을 배포하려면 다음을 수행합니다.

snowpark-submit \
  --snowflake-workload-name MY_PYTHON_JOB \
  --snowflake-connection-name MY_CONNECTION_CONFIG_NAME
  app.py arg1 arg2
Copy

인증

|spsubmit|은 Snowflake로 인증하기 위한 여러 가지 메서드를 제공합니다. 메서드를 한 가지 이상 사용해야 합니다. 연결 프로필과 직접 인증은 함께 또는 별도로 사용할 수 있습니다. 명령줄 옵션도 있는 경우 이 옵션에서 연결 프로필의 해당 필드를 재정의합니다.

연결 프로필

미리 구성된 Snowflake 연결 프로필을 사용하려면 다음을 수행합니다.

snowpark-submit \
  --snowflake-connection-name my_connection \
  --snowflake-workload-name MY_JOB \
  app.py
Copy

직접 인증

사용자 이름 및 비밀번호

명령에서 직접 인증 세부 정보를 제공하려면 다음을 수행합니다.

snowpark-submit \
  --host myhost \
  --account myaccount \
  --user myuser \
  --password mypassword \
  --role myrole \
  --snowflake-workload-name MY_JOB \
  app.py
Copy

OAuth

OAuth 토큰을 사용해 인증하려면 다음을 수행합니다.

snowpark-submit \
  --host myhost \
  --account myaccount \
  --authenticator oauth \
  --token-file-path /path/to/token.txt \
  --snowflake-workload-name MY_JOB \
  --compute-pool MY_COMPUTE_POOL \
  app.py
Copy

Snowflake 리소스

작업에 사용할 Snowflake 데이터베이스, 스키마, 웨어하우스 및 컴퓨팅 풀을 지정하려면 다음을 수행합니다.

snowpark-submit \
  --database MY_DB \
  --schema MY_SCHEMA \
  --warehouse MY_WH \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name MY_CONNECTION \
  app.py
Copy

Snowflake 스테이지

|spsubmit|을 사용하면 Snowflake 스테이지에 직접 파일을 저장하고 이에 액세스할 수 있습니다.

Snowflake 스테이지에서 파일을 사용해 작업을 제출하려면 다음을 수행합니다.

snowpark-submit \
  --snowflake-stage @my_stage \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name MY_CONNECTION \
  @my_stage/app.py
Copy

종속성 관리

애플리케이션의 종속성을 관리할 수 있습니다.

Python 종속성

애플리케이션에 필요한 추가 Python 파일 또는 아카이브를 지정하려면 다음을 수행합니다.

snowpark-submit \
  --py-files dependencies.zip,module.py \
  --snowflake-workload-name MY_PYTHON_JOB \
  --snowflake-connection-name MY_CONNECTION \
  app.py
Copy

모니터링 및 제어

Snowpark Submit 작업을 효과적으로 모니터링하고 제어할 수 있습니다.

작업 완료 대기 중

기본적으로 |spsubmit|은 작업을 시작하고 즉시 반환합니다. 차단 모드에서 실행한 후 작업이 완료될 때까지 기다리려면 다음을 수행합니다.

snowpark-submit \
  --snowflake-connection-name my_connection \
  --snowflake-workload-name MY_JOB \
  --wait-for-completion \
  app.py
Copy

wait-for-completion 플래그는 작업이 완료(성공 또는 실패)될 때까지 명령이 차단되어 주기적으로 상태 업데이트를 표시합니다. 이는 Apache Airflow를 사용할 때처럼 다른 작업을 진행하기 전에 작업이 완료되었는지 확인해야 하는 워크플로에 유용합니다.

워크로드 상태 확인하기

워크로드의 상태(실행 중 또는 완료됨)를 확인합니다.

snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
Copy

이 명령은 다음과 같은 워크로드 정보를 반환합니다.

  • 현재 상태(DEPLOYING, RUNNING, SUCCEEDED, FAILED)

  • 시작 시간 및 기간

  • 서비스 세부 정보

애플리케이션 로그 보기

워크로드 상태와 함께 자세한 로그를 보려면 다음을 수행합니다.

snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
Copy

display-logs 플래그는 애플리케이션의 출력 로그를 가져와 콘솔에 출력합니다. 이러한 로그를 사용하여 다음 작업을 수행할 수 있습니다.

  • 애플리케이션 오류 디버그

  • 실행 진행 상황 모니터링

  • 애플리케이션 출력 보기

참고

로그를 가져올 준비가 될 때까지 몇 초에서 몇 분까지 짧은 대기 시간이 있습니다. 이벤트 테이블을 사용하여 로그 데이터를 저장하지 않으면 로그는 5분 이하와 같이 짧은 시간 동안 보존됩니다.

고급 구성

고급 구성이 포함된 Snowpark Submit 작업을 미세하게 조정합니다.

외부 액세스 통합

Spark 애플리케이션에서 외부 서비스에 연결합니다.

snowpark-submit \
  --external-access-integrations "MY_NETWORK_RULE,MY_STORAGE_INTEGRATION" \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name my_connection \
  app.py
Copy

로깅 수준 구성

Snowflake 이벤트 테이블에 대한 애플리케이션의 로깅 수준을 제어합니다.

snowpark-submit \
  --snowflake-log-level INFO \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name MY_CONNECTION \
  app.py
Copy

–snowflake-log-level 옵션(INFO, ERROR, NONE)입니다.

작업 컨텍스트 추가하기

Snowflake에서 워크로드를 더 쉽게 식별할 수 있도록 설명 주석을 추가합니다.

snowpark-submit \
  --comment "Daily data processing job" \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name my_connection \
  app.py
Copy