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, certifique-se de atender aos seguintes pré-requisitos:

  • Conta Snowflake: Verifique se você tem acesso a uma conta Snowflake. Você precisará de um usuário com privilégios suficientes (por exemplo, ACCOUNTADMIN ou USERADMIN para a configuração inicial) para criar o usuário dedicado e a função personalizada detalhadas em Etapa 1: configure os objetos Snowflake.

  • Acesso à rede: certifique-se de que sua rede permite conectividade de saída para o Snowflake e o AWS S3. Ajuste as regras de firewall, se necessário, porque o SDK faz chamadas da API REST para o Snowflake e para o AWS S3.

  • Ambiente de desenvolvimento Java: instale o Java 11 ou posterior e o Maven para o gerenciamento de dependências.

  • Python instale o Python versão 3.9 ou posterior.

  • Snowpipe Streaming SDKs and the sample code: Obtain the Java SDK or Python SDK and download the sample code for your preferred language from the Snowpipe Streaming SDK examples in the GitHub repository.

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
Copy
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Copy

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

Run the following SQL commands in your Snowflake account (for example, using Snowsight or Snowflake CLI). Note that you will need a role with permissions to create users, roles, and databases (such as ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, and so on, with your desired names.

-- 1. Create a dedicated role and user (Run with a highly-privileged role)
CREATE OR REPLACE USER MY_USER;
CREATE ROLE IF NOT EXISTS MY_ROLE;
GRANT ROLE MY_ROLE TO USER MY_USER;

-- 2. Set the public key for key-pair authentication
-- NOTE: Replace 'YOUR_FORMATTED_PUBLIC_KEY' with the output of the PUBK variable from the key generation step.
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';

-- 3. Set the default role (Recommended)
ALTER USER MY_USER SET DEFAULT_ROLE=MY_ROLE;

-- 4. Switch to the new role and create objects
USE ROLE MY_ROLE;
-- NOTE: You may also need to run USE WAREHOUSE YOUR_WH; here if a default warehouse isn't set.

-- Create database and schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;

-- Create a 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')));


-- 5. Configure authentication policy (Optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
  AUTHENTICATION_METHODS = ('KEYPAIR')
  CLIENT_TYPES = ('DRIVERS');

-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
Copy

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 seu projeto de demonstração.

profile.json template

{
    "user": "MY_USER",
    "account": "your_account_identifier",
    "url": "https://your_account_identifier.snowflakecomputing.com:443",
    "private_key_file": "rsa_key.p8",
    "role": "MY_ROLE"
}
Copy

Substitua os espaços reservados:

Etapa 3: configure o projeto de demonstração

Download: Sample Java code

Adicionar a dependência JAR

Para incluir o SDK do Snowpipe Streaming, adicione a seguinte dependência ao pom.xml do Maven. O Maven baixa 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>
Copy

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 que você configurou em Etapa 2: configure um perfil de autenticação está localizado no diretório raiz do seu projeto.

Etapa 4: use o exemplo de código fornecido e execute o aplicativo de demonstração

No seu terminal, navegue até o diretório raiz do projeto.

Criar e executar

  • Crie o projeto:

    mvn clean install
    
    Copy
  • Execute a classe principal:

    mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
    
    Copy

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