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:

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

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ário https://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 para DEBUG), 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:

    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:

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 propriedade PRIVATEKEY).

Para criar a sessão:

  1. 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 objeto SessionBuilder.

    • Se você tiver construído programaticamente um Map das propriedades, passe o Map para o método configs do objeto SessionBuilder.

    Ambos os métodos retornam um objeto SessionBuilder que possui essas propriedades.

  2. Chame o método create do objeto SessionBuilder 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>
Copy

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>
Copy

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

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

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