Configurações do Snowpipe Streaming com arquitetura de alto desempenho¶
Este guia descreve as configurações para o cliente Snowpipe Streaming de alto desempenho que estão disponíveis em SDKs Java e Python. Há dois tipos distintos de configuração:
Variáveis de ambiente no âmbito do processo: Variáveis que controlam o registro em log e as métricas para todo o aplicativo em execução e devem ser definidas antes da inicialização do cliente.
Propriedades do lado do cliente: Propriedades que definem a conexão segura e o destino da ingestão, por exemplo,
url,usereprivate_key, e são configuradas para um objeto de cliente específico, normalmente por meio de um mapa em linha ou de um arquivoprofile.json.
Um único aplicativo pode executar vários objetos de cliente. Cada objeto tem as próprias propriedades do lado do cliente, mas todos compartilham as mesmas configurações de variável de ambiente no âmbito do processo para registro em log e métricas.
A arquitetura de alto desempenho exige que o cliente seja explicitamente vinculado a um objeto PIPE específico, que gerencia o esquema, as transformações e a ingestão na tabela de destino.
Variáveis de ambiente¶
Essas configurações controlam o comportamento no âmbito do processo, como o registro em log e a coleta de métricas, e devem ser definidas como variáveis de ambiente antes que o objeto de cliente seja inicializado. A tabela a seguir mostra as variáveis de ambiente que se aplicam a todos os objetos do cliente Snowpipe Streaming dentro do mesmo processo:
Variável |
Descrição |
Valor padrão |
|---|---|---|
|
Definir como TRUE para habilitar o servidor de métricas Prometheus integrado. |
FALSE |
|
A porta usada para expor as métricas. |
50000 |
|
O endereço IP em que o servidor de métricas está hospedado. |
127.0.0.1 |
|
O nível mínimo de registro em log a ser gerado. |
|
Propriedades obrigatórias¶
O SDK de alto desempenho exige que várias propriedades estabeleçam a conexão segura e o destino de ingestão específico (o PIPE). A tabela a seguir mostra as propriedades de conexão e autenticação de usuário necessárias:
Propriedade |
Descrição |
|---|---|
|
URL para acessar sua conta Snowflake, incluindo o identificador da sua conta. O protocolo (https://) e o número da porta são opcionais. |
|
Nome de login do usuário da conta Snowflake. |
|
Identificador da conta Snowflake; por exemplo, xy12345. |
Se authorization_type está definido como JWT, que é o padrão, forneça o conteúdo da chave ou o caminho do arquivo da chave, conforme mostrado na tabela a seguir:
Propriedade |
Descrição |
|---|---|
|
Conteúdo da chave privada usado para autenticar o usuário. Inclua apenas o conteúdo da chave, sem cabeçalho, rodapé ou quebras de linha. |
|
Caminho do arquivo para a chave privada; por exemplo, rsa_key.p8. Esta é uma alternativa para fornecer o conteúdo da chave diretamente. |
Propriedades opcionais¶
A tabela a seguir mostra as propriedades opcionais de SDK de alto desempenho:
Propriedade |
Descrição |
|---|---|
|
Função de controle de acesso a ser usada para a sessão após a conexão ao Snowflake. |
|
Propriedade que configura o método de autenticação. As opções são: JWT (autenticação de par de chaves, padrão). |
Externalização de segredos¶
A Snowflake recomenda fortemente que você externalize os segredos, como private_key e credenciais OAuth, e armazene-os em um serviço de gerenciamento de chaves; por exemplo, AWS KMS.
Exemplos de configuração¶
Os exemplos a seguir mostram configurações de variáveis de ambiente e do lado do cliente.
Configuração do lado do cliente por meio de um arquivo profile.json¶
O exemplo a seguir mostra como definir propriedades do lado do cliente:
// profile.json
{
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key_file": "/path/to/rsa_key.p8",
"role": "MY_INGEST_ROLE"
}
Configuração do lado do cliente fornecida em linha¶
Os exemplos a seguir mostram como definir propriedades do lado do cliente diretamente no código:
Exemplo em Python¶
config = {
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Exemplo em Java¶
Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
Configuração de variáveis de ambiente¶
Os exemplos a seguir mostram como definir variáveis de ambiente no âmbito do processo no shell antes de executar o aplicativo:
Linux ou macOS (Bash ou Zsh)¶
# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn
# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5
# Now run your application
Windows (prompt de comando)¶
# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn
# Change the metrics port
set SS_METRICS_PORT=55000
# Now run your application