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.
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.