Usando o Snowpipe Streaming com 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.

Snowpipe Streaming com tabelas Iceberg

Os dados enviados por meio da Snowpipe Streaming API ingerem linhas por meio de um ou mais canais, que são automaticamente liberados de acordo com o MAX_CLIENT_LAG especificado.

A propriedade MAX_CLIENT_LAG controla a latência da ingestão de streaming.

  • Para tabelas Snowflake padrão (não Iceberg), o MAX_CLIENT_LAG padrão é 1 segundo.

  • Para tabelas Iceberg, o MAX_CLIENT_LAG padrão é 30 segundos.

O Snowflake se conecta ao seu local de armazenamento usando um volume externo, e o Snowpipe Streaming libera os dados para criar arquivos de dados Parquet compatíveis com o Iceberg com os metadados correspondentes do Iceberg. Esses arquivos de dados e metadados do Parquet são carregados no local de armazenamento em nuvem externo configurado e disponibilizados como tabelas Iceberg gerenciadas pelo Snowflake e registradas no Snowflake como o catálogo Iceberg.

Configurações

Crie a tabela Iceberg gerenciada pelo Snowflake com o volume externo configurado e especifique o nome da tabela Iceberg na solicitação de canal aberto.

Para ativar o Snowpipe Streaming com a tabela Iceberg gerenciada pelo Snowflake, você precisa definir a seguinte propriedade ENABLE_ICEBERG_STREAMING=true no arquivo profile.json.

Tipos de dados suportados

  • O Snowflake Ingest SDK é compatível com a maioria dos tipos de dados do Iceberg, da mesma forma que o Snowflake é compatível atualmente. Para obter mais informações, consulte Tipos de dados para tabelas Apache Iceberg™.

  • O Snowflake Ingest SDK oferece suporte a ingestão nos três tipos de dados estruturados: ARRAY estruturado, OBJECT estruturado e MAP estruturado.

Notas de uso

  • O padrão MAX_CLIENT_LAG para streaming em tabelas Iceberg gerenciadas pelo Snowflake é de 30 segundos para garantir arquivos Parquet otimizados. É possível definir a propriedade com um valor mais baixo, mas recomendamos que você não faça isso, a menos que haja uma taxa de transferência significativamente alta.

  • O Ingest SDK oferece suporte à compactação automática sem servidor de pequenos arquivos Parquet de forma assíncrona.

  • O mesmo aplicativo cliente não pode ser usado para tabelas Iceberg e não Iceberg simultaneamente.

  • As tabelas Iceberg gerenciadas pelo Snowflake não são compatíveis com criptografia do lado do cliente.

  • Os arquivos Parquet compatíveis com o Iceberg são criados com base no STORAGE_SERIALIZATION_POLICY especificado na tabela Iceberg.

  • O Snowpipe Streaming é compatível apenas com o Snowflake como o catálogo do Iceberg, mas também é compatível com a sincronização com o Snowflake Open Catalog.

  • O Snowflake se conecta ao seu local de armazenamento usando um volume externo. Você é responsável pelo armazenamento de dados para tabelas Iceberg.

  • A ingestão do Snowpipe Streaming nas tabelas Iceberg gerenciadas pelo Snowflake está disponível gratuitamente por um período limitado.

Limitações

As limitações documentadas para o Snowpipe Streaming também se aplicam ao Snowpipe Streaming com tabelas Iceberg.