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();