Snowpipe Streaming – Arquitetura clássica

A arquitetura clássica do Snowpipe Streaming oferece um método comprovado e eficiente para a ingestão de dados contínua, de baixa latência e baseada em linhas diretamente nas tabelas do Snowflake. Essa implementação, chamada de Snowpipe Streaming Classic na documentação, continua sendo uma opção confiável para diversas cargas de trabalho de streaming, como dados de eventos de aplicativos, leituras de sensores da Internet das Coisas (IoT) e captura de dados de alterações (CDC) de baixa latência.

O Snowpipe Streaming Classic usa o snowflake-ingest-java SDK e opera sem o conceito explícito de objeto PIPE para gerenciar o fluxo de dados que é fundamental para a arquitetura de alto desempenho do Snowpipe Streaming. Em vez disso, no Snowpipe Streaming Classic, os canais são configurados mais diretamente em relação às tabelas, oferecendo uma abordagem familiar e estabelecida para o streaming de dados no Snowflake.

Requisitos de software

Para conhecer as diferenças entre as arquiteturas clássica e de alto desempenho, consulte Diferenças da API.

Aplicativo de cliente personalizado

A API requer uma interface de aplicativo Java personalizada que possa aceitar linhas de dados e lidar com erros que ocorrem. É necessário garantir que o aplicativo seja executado continuamente e possa se recuperar de falhas. Para um determinado lote de linhas, a API oferece suporte ao equivalente a ON_ERROR = CONTINUE | SKIP_BATCH | ABORT.

  • CONTINUE: continuar a carregar as linhas de dados aceitáveis e retornar todos os erros.

  • SKIP_BATCH: ignorar o carregamento e retornar todos os erros se algum erro for encontrado em todo o lote de linhas.

  • ABORT (configuração padrão): anular todo o lote de linhas e lançar uma exceção quando o primeiro erro é encontrado.

Para o Snowpipe Streaming clássico, o aplicativo faz validações de esquema usando a resposta dos métodos insertRow (linha única) ou insertRows (conjunto de linhas). Para o tratamento de erros para a arquitetura de alto desempenho, consulte Tratamento de erros.

Carregamento de dados em tabelas Apache Iceberg™

Com o Snowflake Ingest SDK versões 3.0.0 e posteriores, o Snowpipe Streaming pode ingerir dados em tabelas Apache Iceberg gerenciadas pelo Snowflake. O Snowpipe Streaming Ingest Java SDK oferece suporte ao carregamento em tabelas Snowflake padrão (não Iceberg) e em tabelas Iceberg.

Para obter mais informações, consulte Usando o Snowpipe Streaming Classic com tabelas Apache Iceberg™.

Migração para arquivos otimizados na arquitetura clássica

O API grava as linhas dos canais em blobs no armazenamento em nuvem, que são então enviados para a tabela de destino. Inicialmente, os dados gravados em uma tabela de destino são armazenados em um formato de arquivo intermediário temporário. Neste estágio, a tabela é considerada uma “tabela mista”, porque os dados particionados são armazenados em uma mistura de arquivos nativos e intermediários. Um processo automatizado em segundo plano migra os dados dos arquivos intermediários ativos para arquivos nativos otimizados para operações de consulta e DML, conforme necessário.

Replicação na arquitetura clássica

Snowpipe Streaming oferece suporte à replicação e failover de tabelas do Snowflake preenchidas por Snowpipe Streaming e seus offsets de canal associados de uma conta de origem para uma conta de destino em diferentes regiões e em plataformas de nuvem.

A replicação não é compatível com a arquitetura de alto desempenho.

Para obter mais informações, consulte Replicação e Snowpipe Streaming.