Tutorial: introdução à arquitetura de alto desempenho do Snowpipe Streaming SDK¶
Este tutorial fornece instruções passo a passo para configurar e executar um aplicativo de demonstração que utiliza a nova arquitetura de alto desempenho com o snowpipe-streaming
SDK.
Pré-requisitos¶
Antes de executar a demonstração, verifique se você tem o seguinte:
Conta Snowflake: acesso a uma conta Snowflake com privilégios suficientes para criar bancos de dados, esquemas, tabelas e gerenciar configurações de segurança.
Ambiente de desenvolvimento Java: Java 11 ou superior instalado, juntamente com o Maven para gerenciamento de dependências.
Snowpipe Streaming JAR: o arquivo
snowpipe-streaming.jar
, que deve ser incluído manualmente em seu projeto.Inclua a versão mais recente do JAR em seu projeto, como demonstra o Etapa 3: configure o projeto de demonstração.
Baixe o código Java de amostra.
Acesso à rede: certifique-se de que sua rede permita a conectividade de saída para o Snowflake e AWS S3. Ajuste as regras de firewall, se necessário, pois o SDK faz chamadas REST API para o Snowflake e AWS S3.
Introdução¶
Esta seção descreve as etapas necessárias para configurar e executar o aplicativo de demonstração.
Etapa 1: configure os objetos Snowflake¶
Antes de usar o snowpipe-streaming
SDK, você deve criar uma tabela de destino e um objeto PIPE dedicado em seu ambiente Snowflake. Diferentemente da arquitetura clássica, a arquitetura de alto desempenho exige um objeto PIPE para a ingestão de dados.
Gere um par de chaves para autenticação¶
Gere um par de chaves públicas e privadas para autenticação usando OpenSSL. Para obter mais informações, consulte Autenticação de pares de chaves e rotação de pares de chaves.
Execute os seguintes comandos em seu terminal para gerar as chaves:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Importante
Salve os arquivos rsa_key.p8
(chave privada) e rsa_key.pub
(chave pública) gerados de forma segura. Eles serão usados nas etapas de autenticação subsequentes.
Crie um banco de dados, um esquema, uma tabela, um canal, e configure a autenticação do usuário¶
Execute os seguintes comandos SQL em sua conta Snowflake (por exemplo, usando o Snowsight ou SnowSQL) para criar os objetos necessários e configurar a autenticação para seu usuário. Substitua os espaços reservados, como MY_USER
, MY_DATABASE
etc., pelos nomes desejados.
-- Create Database and Schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;
-- Create Target Table
CREATE OR REPLACE TABLE MY_TABLE (
data VARIANT,
c1 NUMBER,
c2 STRING
);
-- Create PIPE Object for Streaming Ingestion
CREATE OR REPLACE PIPE MY_PIPE
AS COPY INTO MY_TABLE FROM (SELECT $1, $1:c1, $1:ts FROM TABLE(DATA_SOURCE(TYPE => 'STREAMING')));
-- Configure Authentication Policy (optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
AUTHENTICATION_METHODS = ('SAML', 'PASSWORD', 'OAUTH', 'KEYPAIR')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS');
-- Create or Modify User for SDK Authentication
CREATE OR REPLACE USER MY_USER; -- Or ALTER USER MY_USER if it already exists
-- Grant necessary roles to the user
GRANT ROLE ACCOUNTADMIN TO USER MY_USER; -- Grant a role with sufficient privileges
-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
-- Set default role (optional)
ALTER USER MY_USER SET DEFAULT_ROLE=ACCOUNTADMIN;
-- Set the public key for key-pair authentication
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';
Nota
Substitua YOUR_FORMATTED_PUBLIC_KEY
pela saída da variável PUBK
da etapa de geração de chaves.
Etapa 2: configure um perfil de autenticação¶
O aplicativo de demonstração requer um arquivo profile.json
para armazenar as configurações de conexão, inclusive os detalhes de autenticação. O SDK usa autenticação de par de chaves para conexões seguras.
Crie um arquivo de configuração de perfil¶
Crie ou atualize o arquivo profile.json
no diretório raiz do projeto de demonstração Java fornecido.
Para formatar sua chave privada (rsa_key.p8
) para inclusão no arquivo profile.json
, execute o seguinte comando no terminal:
sed 's/$/\\n/' rsa_key.p8 | tr -d '\n'
Esse comando produzirá sua chave privada com caracteres de nova linha com o caractere de escape, tornando-a adequada para uma cadeia de caracteres JSON.
profile.json template¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
Substitua os espaços reservados:
MY_USER
: seu nome de usuário Snowflake configurado na etapa anterior.your_account_identifier
: seu identificador de conta Snowflake (por exemplo,xy12345
).YOUR_FORMATTED_PRIVATE_KEY
: a saída do comandosed
executado acima. Exemplo de formato:-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----
.
Etapa 3: configure o projeto de demonstração¶
Adicione a dependência de JAR¶
Para incluir o Snowpipe Streaming SDK, adicione a seguinte dependência ao seu Maven pom.xml
. O Maven baixará automaticamente o JAR do repositório público.
<dependency>
<groupId>com.snowflake</groupId>
<artifactId>snowpipe-streaming</artifactId>
<version>YOUR_SDK_VERSION</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.18.1</version>
</dependency>
Importante
Substitua YOUR_SDK_VERSION
pela versão específica disponível no Maven Central.
Coloque o arquivo de perfil¶
Certifique-se de que o arquivo profile.json
(configurado na etapa 2) esteja localizado no diretório raiz de seu projeto.
Etapa 4: use o exemplo de código Java fornecido e execute o aplicativo de demonstração¶
Crie e execute¶
Navegue até o diretório raiz do projeto em seu terminal.
Crie o projeto:
mvn clean install
Execute a classe principal:
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
Etapa 5: verifique os dados¶
Após executar a demonstração, verifique os dados ingeridos no Snowflake:
SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;