Como criar uma sessão para o Snowpark Java¶
Para utilizar o Snowpark em seu aplicativo, você precisa criar uma sessão. Para conveniência em código escrito, você também pode importar os nomes dos pacotes e objetos.
Neste tópico:
Como importar nomes de pacotes para o Snowpark¶
A API do Snowpark fornece uma série de classes em diferentes pacotes. Por conveniência, você pode importar esses pacotes para evitar ter que usar nomes qualificados para as classes.
Por exemplo:
O pacote com.snowflake.snowpark_java contém as principais classes para a API do Snowpark. Para importar os nomes nesse pacote:
import com.snowflake.snowpark_java.*;
O pacote com.snowflake.snowpark_java.types define classes que você pode usar para definir esquemas para dados semiestruturados.
import com.snowflake.snowpark_java.types.*;
Como criar uma sessão para o Snowpark¶
O primeiro passo para usar a biblioteca é estabelecer uma sessão com o banco de dados do Snowflake. Para criar uma sessão, use os métodos da classe SessionBuilder
. Você pode acessar um objeto SessionBuilder
chamando o método estático builder
na classe Session
:
import com.snowflake.snowpark_java.*;
...
// Get a SessionBuilder object.
SessionBuilder builder = Session.builder();
Para fornecer os detalhes para estabelecer uma sessão com um banco de dados do Snowflake (por exemplo, o identificador de conta, nome de usuário, etc.), crie um arquivo de propriedades (um arquivo de texto) ou programe um Map
contendo as propriedades.
No arquivo de propriedades ou Map
, defina as seguintes propriedades:
URL
: Defina isso como a URL de sua conta no formuláriohttps://account_identifier.snowflakecomputing.com
.Consulte Identificadores de conta.
Se o identificador da conta contiver sublinhados (
_
), substitua os sublinhados por hífens (-
).Quaisquer parâmetros adicionais do JDBC (consulte Referência dos parâmetros de conexão do driver JDBC na documentação do driver JDBC) necessários para conectar ao Snowflake (por exemplo,
USER
,ROLE
,WAREHOUSE
,DB
,SCHEMA
, etc.).Nota
Para alterar o nível de registro em log (por exemplo, de
INFO
paraDEBUG
), consulte Como mudar as configurações de registro em log.(Opcional)
snowpark_request_timeout_in_seconds
: Defina esse valor como o número máximo de segundos que a biblioteca do Snowpark deve esperar nos seguintes casos:Ao esperar que as dependências sejam carregadas para um estágio.
Ao esperar a conclusão de uma ação assíncrona.
O valor padrão dessa propriedade é 86400 segundos (1 dia).
Nota
Essa propriedade foi introduzida no Snowpark 0.10.0.
Para autenticar, você pode usar os mesmos mecanismos que aqueles suportados pelo driver JDBC. Por exemplo, você pode usar:
autenticação baseada em senha (definindo a propriedade
PASSWORD
)
Para a autenticação de pares de chaves, você pode:
Definir a propriedade
PRIVATE_KEY_FILE
como o caminho do arquivo de chave privada.Se a chave privada estiver criptografada, definir a propriedade
PRIVATE_KEY_FILE_PWD
como a senha de descriptografia da chave.Definir a propriedade
PRIVATEKEY
como o valor da cadeia de caracteres da chave privada não criptografada do arquivo da chave privada. (Se a chave privada estiver criptografada, você deverá descriptografar a chave antes de defini-la como o valor da propriedadePRIVATEKEY
).
Para criar a sessão:
Defina as propriedades no objeto
SessionBuilder
.Se você tiver criado um arquivo de propriedades, passe o caminho do arquivo de propriedades para o método
configFile
do objetoSessionBuilder
.Se você tiver construído programaticamente um
Map
das propriedades, passe oMap
para o métodoconfigs
do objetoSessionBuilder
.
Ambos os métodos retornam um objeto
SessionBuilder
que possui essas propriedades.Chame o método
create
do objetoSessionBuilder
para estabelecer a sessão.
A seguir, veja um exemplo de um arquivo de propriedades que estabelece os parâmetros básicos para a conexão a um banco de dados do Snowflake. O exemplo está configurado para usar autenticação de pares de chaves. Defina PRIVATE_KEY_FILE
como o caminho do arquivo de chave privada. Além disso, se a chave privada estiver criptografada, você deve definir PRIVATE_KEY_FILE_PWD
como a senha de descriptografia da chave privada:
# 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>
Como alternativa, você pode definir a propriedade PRIVATEKEY
como a chave privada descriptografada do arquivo de chave privada.
# 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>
O exemplo a seguir usa esse arquivo de propriedades para criar uma nova sessão:
// Create a new session, using the connection properties
// specified in a file.
Session session = Session.builder().configFile("/path/to/properties/file").create();
O exemplo a seguir usa um objeto Map para definir as propriedades:
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();
Como encerrar uma sessão¶
Se você não precisar mais usar uma sessão para executar consultas e quiser cancelar qualquer consulta que esteja em execução no momento, chame o método close
do objeto Session
. Por exemplo:
// 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();