Como criar uma sessão para o Snowpark Scala

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:

Importação de nomes de pacotes e objetos para o Snowpark

A API do Snowpark fornece uma série de classes, objetos e funções que estão disponíveis em diferentes pacotes. Por conveniência, você pode importar os nomes de classes, objetos e funções de pacotes e objetos para evitar ter que usar nomes qualificados.

Por exemplo:

Nota

Se você tiver usado o script run.sh para iniciar o Scala REPL, o script já importará nomes com.snowflake.snowpark e com.snowflake.snowpark.functions.

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 o objeto SessionBuilder. Você pode acessar o objeto SessionBuilder através do campo builder no objeto complementar Session:

import com.snowflake.snowpark._

...
// Get a SessionBuilder object.
val 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 Session.builder.

    • Se você tiver criado um arquivo de propriedades, passe o caminho do arquivo de propriedades para o método Session.builder.configFile.

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

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

  2. Chame o método create do objeto builder 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.
val session = Session.builder.configFile("/path/to/properties/file").create
Copy

O exemplo a seguir usa um objeto Map para definir as propriedades:

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