Arquitetura de alto desempenho do Snowpipe Streaming com tabelas Apache Iceberg™¶
O Snowpipe Streaming com arquitetura de alto desempenho oferece suporte à ingestão de dados em tabelas Apache Iceberg gerenciadas pelo Snowflake, incluindo ambas as tabelas Iceberg v2 e Iceberg v3. Isso permite o streaming de dados quase em tempo real para tabelas Iceberg com todos os benefícios de desempenho da arquitetura de alto desempenho.
Nota
A arquitetura clássica é compatível apenas com as tabelas Iceberg v2. Se você precisa de suporte para o Iceberg v3, deve usar a arquitetura de alto desempenho. Para obter mais informações sobre o suporte ao Iceberg na arquitetura clássica, consulte Snowpipe Streaming Classic com tabelas Apache Iceberg™.
Como funciona¶
O Snowpipe Streaming ingere os dados por meio do objeto PIPE em sua tabela Iceberg de destino. O Snowflake cria arquivos de dados do Apache Parquet compatíveis com o Iceberg usando os metadados correspondentes do Iceberg e os carrega no local de armazenamento em nuvem externo configurado. Os dados são disponibilizados como uma tabela Iceberg gerenciada pelo Snowflake e registrados no Snowflake como o catálogo Iceberg.
O Snowflake se conecta ao seu local de armazenamento usando um volume externo.
Introdução¶
Esta seção apresenta um exemplo passo a passo de como configurar o Snowpipe Streaming com a arquitetura de alto desempenho para ingerir dados em uma tabela Iceberg.
Etapa 1: Criação de um volume externo¶
Crie um volume externo que especifique um local de armazenamento para os dados da tabela Iceberg.
Conceda a função de streaming USAGE no volume externo:
Etapa 2: Criação de uma tabela Iceberg gerenciada pelo Snowflake¶
Crie uma tabela Iceberg gerenciada pelo Snowflake com seu volume externo configurado:
Nota
Se você omitir o parâmetro ICEBERG_VERSION, a tabela assumirá como padrão o Iceberg v2.
Etapa 3: Criação de um canal para ingestão¶
Crie um canal que tenha como destino a tabela Iceberg. Você pode usar o canal padrão (criado automaticamente) ou criar um canal personalizado:
Etapa 4: Transmissão de dados usando o SDK¶
Configure o SDK para transmitir os dados para sua tabela Iceberg pelo canal. Use a mesma configuração de SDK, conforme descrito em:doc:snowpipe-streaming-high-performance-getting-started, especificando o canal da tabela Iceberg na configuração do cliente.
Versões do Iceberg compatíveis¶
A arquitetura de alto desempenho é compatível com as tabelas Iceberg v2 e Iceberg v3.
A arquitetura clássica é compatível apenas com as tabelas Iceberg v2.
Tipos de dados suportados¶
O Snowflake Ingest SDK é compatível com a maioria dos tipos de dados do Iceberg que o Snowflake atualmente. Para obter mais informações, consulte Tipos de dados para tabelas Apache Iceberg™.
O SDK também é compatível com os três tipos de dados estruturados: ARRAY, OBJECT e MAP estruturados.
Notas de uso¶
O Snowpipe Streaming é compatível apenas com o Snowflake como catálogo Iceberg. Tabelas Iceberg gerenciadas externamente que usam catálogos externos (como AWS Glue ou Hive Metastore) não são compatíveis. No entanto, você pode sincronizar suas tabelas Iceberg gerenciadas pelo Snowflake 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.
Os arquivos Parquet compatíveis com o Iceberg são criados com base na STORAGE_SERIALIZATION_POLICY especificada na tabela Iceberg.
Limitações¶
As seguintes limitações se aplicam ao Snowpipe Streaming com arquitetura de alto desempenho e tabelas Iceberg:
Não há suporte para tabelas Iceberg particionadas.
A evolução de esquema não é compatível com as tabelas Iceberg.
Colunas VARCHAR com restrição de tamanho (por exemplo,
VARCHAR(100)) não são compatíveis com tabelas Iceberg. Use STRING ou VARCHAR sem restrição de tamanho.
As limitações da arquitetura de alto desempenho do Snowpipe Streaming e as limitações das tabelas Iceberg também se aplicam.