Trabalhar com o Apache Iceberg V3 - Amazon Simple Storage Service

Trabalhar com o Apache Iceberg V3

O Apache Iceberg Versão 3 (V3), a versão mais recente da especificação de formato de tabela Apache Iceberg, introduz recursos avançados para criar data lakes em escala de petabytes com desempenho aprimorado e custos operacionais indiretos reduzidos. A V3 aborda gargalos de desempenho comuns encontrados na V2, principalmente em relação a atualizações em lote e exclusões de conformidade.

A AWS permite o uso de vetores de exclusão e linhagem de linha, conforme definido na especificação do Apache Iceberg Versão 3 (V3). Esses recursos estão disponíveis com o Apache Spark no Amazon EMR 7.12, no Glue ETL, em cadernos do Estúdio Unificado Amazon SageMaker e em tabelas Apache Iceberg no Catálogo de Dados do AWS Glue, inclusive na funcionalidade Tabelas do Amazon S3.

Recursos principais na V3

Vetores de exclusão

Substituem os arquivos de exclusão posicional da V2 por um formato binário eficiente armazenado como arquivos Puffin. Isso elimina a amplificação da gravação de atualizações aleatórias em lote e exclusões de conformidade segundo o RGPD, reduzindo significativamente os custos indiretos de manter os dados atualizados. As organizações que processam atualizações de alta frequência verão melhorias imediatas no desempenho de gravação e custos reduzidos de armazenamento com a diminuição do número de arquivos pequenos.

Linhagem de linha

Permite o rastreamento preciso de alterações em nível de linha. Os sistemas subsequentes podem processar alterações de forma incremental, acelerando os pipelines de dados e reduzindo os custos de computação para fluxos de trabalho de captura de dados de alteração (CDC). Esse recurso integrado elimina a necessidade de implementações personalizadas de rastreamento de alterações.

Compatibilidade da versão

A V3 mantém a compatibilidade com versões anteriores de tabelas da V2. Os serviços da AWS aceitam tabelas da V2 e da V3 simultaneamente, permitindo que você:

  • Execute consultas em tabelas da V2 e da V3.

  • Atualize as tabelas existentes da V2 para a V3 sem reescrever dados.

  • Execute consultas de viagem no tempo que abrangem snapshots da V2 e da V3.

  • Use a evolução do esquema e o particionamento oculto nas versões de tabela.

Importante

A V3 é uma atualização unidirecional. Depois que uma tabela é atualizada da V2 para a V3, não é possível fazer downgrade para a V2 por meio de operações padrão.

Conceitos básicos da V3

Pré-requisitos

Antes de trabalhar com tabelas da V3, verifique se você tem:

  • Uma conta da AWS com permissões apropriadas do IAM.

  • Acesso a um ou mais serviços de analytics da AWS (EMR, Glue, cadernos do Estúdio Unificado Amazon SageMaker ou Tabelas do S3).

  • Um bucket do S3 para armazenar dados e metadados de tabela.

  • Um bucket de tabela para começar a usar a funcionalidade Tabelas do S3 ou um bucket do S3 de uso geral se estiver criando sua própria infraestrutura Iceberg.

  • Catálogo do AWS Glue configurado.

Criar tabelas da V3

Criar outras tabelas da V3

Para criar uma tabela do Iceberg V3, defina a propriedade de tabela format-version como 3.

Usar o Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Atualizar tabelas da V2 para a V3

É possível atualizar tabelas existentes da V2 para a V3 atomicamente sem reescrever dados.

Usar o Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Importante

A V3 é uma atualização unidirecional. Depois que uma tabela é atualizada da V2 para a V3, não é possível fazer downgrade para a V2 por meio de operações padrão.

O que ocorre durante a atualização:

  • Um novo snapshot de metadados é criado atomicamente.

  • Os arquivos de dados Parquet existentes são reutilizados.

  • Campos de linhagem de linha são adicionados aos metadados da tabela.

  • A compactação seguinte remove os arquivos de exclusão antigos da V2.

  • As novas modificações usam os arquivos de vetor de exclusão do V3.

  • A atualização não realiza um preenchimento histórico dos registros de rastreamento de alterações de linhagem de linha.

Habilitar vetores de exclusão

Para utilizar vetores de exclusão para atualizações, exclusões e mesclagens, configure o modo de gravação.

Usar o Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

Essas configurações garantem que as operações de atualização, exclusão e mesclagem criem arquivos de vetores de exclusão em vez de reescrever arquivos de dados inteiros.

Utilizar a linhagem de linha para rastreamento de alterações

A V3 adiciona automaticamente campos de metadados de linhagem de linha para rastrear alterações.

Usar o Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

O campo _row_id identifica exclusivamente cada linha, enquanto _last_updated_sequence_number rastreia quando a linha foi modificada pela última vez. Use esses campos para:

  • Identificar as linhas alteradas para processamento incremental.

  • Rastrear a linhagem de dados para fins de conformidade.

  • Otimizar pipelines de CDC.

  • Reduzir os custos de computação processando somente as alterações.

Práticas recomendadas para a V3

Quando usar a V3

Considere a possibilidade de fazer a atualização ou começar com a V3 quando:

  • Executar atualizações ou exclusões frequentes em lote.

  • Precisar atender a requisitos do RGPD ou de exclusão de conformidade.

  • Suas workloads envolverem atualizações e inserções de alta frequência.

  • Precisar de fluxos de trabalho de CDC eficientes.

  • Quiser reduzir os custos de armazenamento de arquivos pequenos.

  • Precisar de melhores recursos de rastreamento de alterações.

Otimizar o desempenho de gravação

  • Habilite os vetores de exclusão para workloads que requerem muitas atualizações:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Configure tamanhos de arquivo apropriados:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

Otimizar o desempenho de leitura

  • Utilize a linhagem de linha para processamento incrementa.

  • Use a viagem no tempo para acessar dados históricos sem precisar copiar.

  • Habilite a coleta de estatísticas para melhorar o planejamento de consultas.

Estratégia de migração

Quando migrar da V2 para a V3:

  • Primeiro teste fora da produção: valide o processo de atualização e o desempenho.

  • Atualize durante períodos de baixa atividade: minimize o impacto nas operações simultâneas.

  • Monitore o desempenho inicial: acompanhe as métricas após a atualização.

  • Execute a compactação: consolide os arquivos excluídos após a atualização.

  • Atualize a documentação: evidencie os recursos da V3 na documentação da equipe.

Considerações sobre compatibilidade

  • Versões de mecanismo: garanta que todos os mecanismos que acessam a tabela sejam compatíveis com a V3.

  • Ferramentas de terceiros: verifique a compatibilidade com a V3 antes de atualizar.

  • Estratégia de backup: teste os procedimentos de recuperação baseados em snapshots.

  • Monitoramento: atualize os painéis de monitoramento para métricas específicas da V3.

Solução de problemas

Problemas comuns

Erro: “"format-version 3 is not supported”
  • Verifique se a versão do mecanismo é compatível com a V3.

    O suporte à V3 para serviços da AWS é o seguinte:

    Serviço Suporte à V3
    Spark no EMR Versão 7.12 e posterior
    AWS Glue ETL Sim
    Cadernos do Estúdio Unificado Amazon SageMaker Sim
    AWS Glue: API REST do Iceberg, manutenção de tabelas Sim
    Tabelas do Amazon S3: API REST do Iceberg, manutenção de tabelas Sim
    Amazon Athena (Trino) Não
  • Verifique a compatibilidade do catálogo.

  • Garanta as versões mais recentes do serviço da AWS.

Degradação do desempenho após a atualização
  • Verifique se não há falhas de compactação. Consulte Registro e monitoramento para Tabelas do S3 para ver mais detalhes.

  • Verifique se os vetores de exclusão estão habilitados. As seguintes propriedades devem estar definidas:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • É possível verificar as propriedades da tabela com o seguinte código:

    DESCRIBE FORMATTED myns.orders_v3
  • Analise a estratégia de partição. O particionamento excessivo pode gerar arquivos pequenos. Execute a consulta abaixo para saber qual é o tamanho médio do arquivo para sua tabela:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Incompatibilidade com ferramentas de terceiros
  • Verifique se a ferramenta é compatível com a especificação da V3.

  • Considere a possibilidade de manter tabelas da V2 para ferramentas não compatíveis.

  • Entre em contato com o fornecedor da ferramenta para se informar sobre o cronograma de suporte da V3.

Receber ajuda

  • AWS Support: entre em contato com o AWS Support para solução de problemas específicos do serviço.

  • Comunidade Apache Iceberg: Iceberg Slack.

  • Documentação da AWS: documentação de analytics da AWS.

Preços

Disponibilidade

O suporte ao Apache Iceberg V3 está disponível em todas as regiões da AWS em que o Amazon EMR, o Catálogo de Dados do AWS Glue, o AWS Glue ETL e a funcionalidade Tabelas do S3 operam.

Recursos adicionais