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:
O pacote com.snowflake.snowpark contém as principais classes para a API do Snowpark. Para importar os nomes nesse pacote, use:
import com.snowflake.snowpark._
O objeto com.snowflake.snowpark.functions object define funções de utilidade (incluindo funções definidas pelo sistema). Para importar os nomes das funções a partir desse objeto, use:
import com.snowflake.snowpark.functions._
O pacote com.snowflake.snowpark.types define classes e objetos que você pode usar para definir esquemas para dados semiestruturados.
import com.snowflake.snowpark.types._
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
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
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 oMap
para o métodoSession.builder.configs
.
Ambos os métodos retornam um objeto
builder
que possui essas propriedades.Chame o método
create
do objetobuilder
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.
val session = Session.builder.configFile("/path/to/properties/file").create
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
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();