Snowpark Scala용 세션 만들기¶
애플리케이션에서 Snowpark를 사용하려면 세션을 만들어야 합니다. 코드 작성의 편의를 위해 패키지 및 오브젝트의 이름을 가져올 수도 있습니다.
이 항목의 내용:
Snowpark용 패키지 및 오브젝트에서 이름 가져오기¶
Snowpark API는 다양한 패키지에서 사용할 수 있는 다양한 클래스, 오브젝트, 함수를 제공합니다. 편의를 위해 패키지 및 오브젝트에서 클래스, 오브젝트, 함수 이름을 가져와, 정규화된 이름을 사용하지 않아도 되도록 할 수 있습니다.
예:
- com.snowflake.snowpark 패키지 에는 Snowpark API의 기본 클래스가 포함되어 있습니다. 이 패키지의 이름을 가져오려면 다음을 사용하십시오. - import com.snowflake.snowpark._ 
- com.snowflake.snowpark.functions 오브젝트 는 유틸리티 함수(시스템 정의 함수 포함)를 정의합니다. 이 오브젝트에서 함수 이름을 가져오려면 다음을 사용하십시오. - import com.snowflake.snowpark.functions._ 
- com.snowflake.snowpark.types 패키지 는 반정형 데이터의 스키마를 정의하는 데 사용할 수 있는 클래스와 오브젝트를 정의합니다. - import com.snowflake.snowpark.types._ 
참고
run.sh 스크립트를 사용하여 Scala REPL을 시작 한 경우, 스크립트는 이미 com.snowflake.snowpark 및 com.snowflake.snowpark.functions 이름을 가져옵니다.
Snowpark 세션 만들기¶
라이브러리 사용의 첫 번째 단계는 Snowflake 데이터베이스와 세션을 설정하는 것입니다. 세션을 만들려면 SessionBuilder 오브젝트를 사용하십시오. Session 컴패니언 오브젝트의 builder 필드를 통해 SessionBuilder 오브젝트에 액세스할 수 있습니다.
import com.snowflake.snowpark._
...
// Get a SessionBuilder object.
val builder = Session.builder
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 드라이버가 지원하는 것과 동일한 메커니즘을 사용할 수 있습니다. 예를 들어 다음을 사용할 수 있습니다.
- 비밀번호 기반 인증( - PASSWORD속성을 설정하여 수행)
키 페어 인증의 경우 다음 중 하나를 수행할 수 있습니다.
- PRIVATE_KEY_FILE속성을 개인 키 파일의 경로로 설정합니다.- 개인 키가 암호화된 경우, - PRIVATE_KEY_FILE_PWD속성을 키 암호 해독을 위한 암호 구문으로 설정하십시오.
- PRIVATEKEY속성을 개인 키 파일에서 암호화되지 않은 개인 키 의 문자열 값으로 설정하십시오. (개인 키가 암호화되어 있는 경우, 키를- PRIVATEKEY속성 값으로 설정하기 전에 키의 암호를 해독해야 합니다.)
세션을 만들려면 다음을 수행하십시오.
- Session.builder오브젝트에서 속성을 설정합니다.- 속성 파일을 만든 경우, 속성 파일의 경로를 - Session.builder.configFile메서드에 전달하십시오.
- 속성의 - Map을 프로그래밍 방식으로 빌드한 경우,- Map을- Session.builder.configs메서드에 전달하십시오.
 - 두 메서드 모두 이러한 속성이 있는 - builder오브젝트를 반환합니다.
- 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>
또는 개인 키 파일에서 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>
다음 예에서는 이 속성 파일을 사용하여 새 세션을 만듭니다.
// Create a new session, using the connection properties
// specified in a file.
val session = Session.builder.configFile("/path/to/properties/file").create
다음 예에서는 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
세션 닫기¶
쿼리 실행을 위해 더 이상 세션을 사용할 필요가 없고, 현재 실행 중인 쿼리를 취소하려면 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();