Snowpark Java용 세션 만들기¶
애플리케이션에서 Snowpark를 사용하려면 세션을 만들어야 합니다. 코드 작성의 편의를 위해 패키지 및 오브젝트의 이름을 가져올 수도 있습니다.
이 항목의 내용:
Snowpark용 패키지에서 이름 가져오기¶
Snowpark API는 다른 패키지에 여러 클래스를 제공합니다. 편의를 위해 이러한 패키지를 가져오면 클래스에 대해 정규화된 이름을 사용하지 않아도 됩니다.
예:
com.snowflake.snowpark_java 패키지 에는 Snowpark API의 기본 클래스가 포함되어 있습니다. 이 패키지의 이름을 가져오려면:
import com.snowflake.snowpark_java.*;
com.snowflake.snowpark_java.types 패키지 는 반정형 데이터의 스키마를 정의하는 데 사용할 수 있는 클래스를 정의합니다.
import com.snowflake.snowpark_java.types.*;
Snowpark 세션 만들기¶
라이브러리 사용의 첫 번째 단계는 Snowflake 데이터베이스와 세션을 설정하는 것입니다. 세션을 만들려면 SessionBuilder
클래스의 메서드를 사용합니다. Session
클래스에서 정적 builder
메서드를 호출하여 SessionBuilder
오브젝트에 액세스할 수 있습니다.
import com.snowflake.snowpark_java.*;
...
// Get a SessionBuilder object.
SessionBuilder 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
속성 값으로 설정하기 전에 키의 암호를 해독해야 합니다.)
세션을 만들려면 다음을 수행하십시오.
SessionBuilder
오브젝트에서 속성을 설정합니다.속성 파일을 만든 경우 속성 파일의 경로를
SessionBuilder
오브젝트의configFile
메서드에 전달합니다.속성의
Map
을 프로그래밍 방식으로 작성한 경우Map
을SessionBuilder
오브젝트의configs
메서드에 전달합니다.
두 메서드 모두 이러한 속성이 있는
SessionBuilder
오브젝트를 반환합니다.SessionBuilder
오브젝트의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.
Session session = Session.builder().configFile("/path/to/properties/file").create();
다음 예에서는 Map을 사용하여 속성을 설정합니다.
import com.snowflake.snowpark_java.*;
import java.util.HashMap;
import java.util.Map;
...
// Create a new session, using the connection properties
// specified in a Map.
// Replace the <placeholders> below.
Map<String, String> properties = new HashMap<>();
properties.put("URL", "https://<account_identifier>.snowflakecomputing.com:443");
properties.put("USER", "<user name>");
properties.put("PRIVATE_KEY_FILE", "</path/to/private_key_file.p8>");
properties.put("PRIVATE_KEY_FILE_PWD", "<if the private key is encrypted, set this to the passphrase for decrypting the key>");
properties.put("ROLE", "<role name>");
properties.put("WAREHOUSE", "<warehouse name>");
properties.put("DB", "<database name>");
properties.put("SCHEMA", "<schema name>");
Session session = Session.builder().configs(properties).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();