Snowpark Scala용 세션 만들기

애플리케이션에서 Snowpark를 사용하려면 세션을 만들어야 합니다. 코드 작성의 편의를 위해 패키지 및 오브젝트의 이름을 가져올 수도 있습니다.

이 항목의 내용:

Snowpark용 패키지 및 오브젝트에서 이름 가져오기

Snowpark API는 다양한 패키지에서 사용할 수 있는 다양한 클래스, 오브젝트, 함수를 제공합니다. 편의를 위해 패키지 및 오브젝트에서 클래스, 오브젝트, 함수 이름을 가져와, 정규화된 이름을 사용하지 않아도 되도록 할 수 있습니다.

예:

참고

run.sh 스크립트를 사용하여 Scala REPL을 시작 한 경우, 스크립트는 이미 com.snowflake.snowparkcom.snowflake.snowpark.functions 이름을 가져옵니다.

Snowpark 세션 만들기

라이브러리 사용의 첫 번째 단계는 Snowflake 데이터베이스와 세션을 설정하는 것입니다. 세션을 만들려면 SessionBuilder 오브젝트를 사용하십시오. Session 컴패니언 오브젝트의 builder 필드를 통해 SessionBuilder 오브젝트에 액세스할 수 있습니다.

import com.snowflake.snowpark._

...
// Get a SessionBuilder object.
val builder = Session.builder
Copy

Snowflake 데이터베이스와 함께 세션을 설정하기 위한 세부 정보(예: 계정 식별자, 사용자 이름 등)를 제공하려면 속성 파일(텍스트 파일)을 만들거나, 속성이 포함된 Map 을 프로그래밍 방식으로 빌드하십시오.

속성 파일 또는 Map 에서 다음 속성을 설정하십시오.

  • URL: https://account_identifier.snowflakecomputing.com 형식의 계정 URL로 설정하십시오.

    계정 식별자 섹션을 참조하십시오.

    계정 식별자에 밑줄(_)이 포함된 경우, 해당 밑줄을 하이픈(-)으로 바꾸십시오.

  • Snowflake에 연결하는 데 필요한 추가 JDBC 매개 변수(JDBC 드라이버 설명서의 JDBC 드라이버 연결 매개 변수 참조 참조)(예: USER, ROLE, WAREHOUSE, DB, SCHEMA 등).

    참고

    로깅 수준을 변경하려면(예: INFO 에서 DEBUG 로 변경) 로깅 설정 변경 을 참조하십시오.

  • (선택 사항) snowpark_request_timeout_in_seconds: 다음과 같은 경우 Snowpark 라이브러리가 기다려야 하는 최대 시간(초)으로 설정합니다.

    이 속성의 기본값은 86400초(1일)입니다.

    참고

    이 속성은 Snowpark 0.10.0에서 도입되었습니다.

인증을 위해 사용자는 JDBC 드라이버가 지원하는 것과 동일한 메커니즘을 사용할 수 있습니다. 예를 들어 다음을 사용할 수 있습니다.

키 페어 인증의 경우 다음 중 하나를 수행할 수 있습니다.

  • PRIVATE_KEY_FILE 속성을 개인 키 파일의 경로로 설정합니다.

    개인 키가 암호화된 경우, PRIVATE_KEY_FILE_PWD 속성을 키 암호 해독을 위한 암호 구문으로 설정하십시오.

  • PRIVATEKEY 속성을 개인 키 파일에서 암호화되지 않은 개인 키 의 문자열 값으로 설정하십시오. (개인 키가 암호화되어 있는 경우, 키를 PRIVATEKEY 속성 값으로 설정하기 전에 키의 암호를 해독해야 합니다.)

세션을 만들려면 다음을 수행하십시오.

  1. Session.builder 오브젝트에서 속성을 설정합니다.

    • 속성 파일을 만든 경우, 속성 파일의 경로를 Session.builder.configFile 메서드에 전달하십시오.

    • 속성의 Map 을 프로그래밍 방식으로 빌드한 경우, MapSession.builder.configs 메서드에 전달하십시오.

    두 메서드 모두 이러한 속성이 있는 builder 오브젝트를 반환합니다.

  2. builder 오브젝트의 create 메서드를 호출하여 세션을 설정합니다.

다음은 Snowflake 데이터베이스에 연결하기 위한 기본 매개 변수를 설정하는 속성 파일의 예입니다. 이 예는 키 페어 인증을 사용하도록 설정되어 있습니다. PRIVATE_KEY_FILE 을 개인 키 파일의 경로로 설정하십시오. 또한, 개인 키가 암호화된 경우, PRIVATE_KEY_FILE_PWD 를 개인 키 암호 해독을 위한 암호 구문으로 설정해야 합니다.

# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATE_KEY_FILE = </path/to/private_key_file.p8>
PRIVATE_KEY_FILE_PWD = <if the private key is encrypted, set this to the passphrase for decrypting the key>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
Copy

또는 개인 키 파일에서 PRIVATEKEY 속성을 암호화되지 않은 개인 키로 설정할 수 있습니다.

# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
Copy

다음 예에서는 이 속성 파일을 사용하여 새 세션을 만듭니다.

// Create a new session, using the connection properties
// specified in a file.
val session = Session.builder.configFile("/path/to/properties/file").create
Copy

다음 예에서는 Map을 사용하여 속성을 설정합니다.

// Create a new session, using the connection properties
// specified in a Map.
val session = Session.builder.configs(Map(
    "URL" -> "https://<account_identifier>.snowflakecomputing.com",
    "USER" -> "<username>",
    "PRIVATE_KEY_FILE" -> "</path/to/private_key_file.p8>",
    "PRIVATE_KEY_FILE_PWD" -> "<if the private key is encrypted, set this to the passphrase for decrypting the key>",
    "ROLE" -> "<role_name>",
    "WAREHOUSE" -> "<warehouse_name>",
    "DB" -> "<database_name>",
    "SCHEMA" -> "<schema_name>"
)).create
Copy

세션 닫기

쿼리 실행을 위해 더 이상 세션을 사용할 필요가 없고, 현재 실행 중인 쿼리를 취소하려면 Session 오브젝트의 close 메서드를 호출하십시오. 예:

// Close the session, cancelling any queries that are currently running, and
// preventing the use of this Session object for performing any subsequent queries.
session.close();
Copy