Trabalhando com a versão 3 da especificação de formato de tabela Iceberg - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Trabalhando com a versão 3 da especificação de formato de tabela Iceberg

A versão mais recente da especificação do formato de tabela Apache Iceberg é a versão 3. Esta versão apresenta recursos avançados para criar lagos de dados em escala de petabytes com desempenho aprimorado e redução da sobrecarga operacional. Ele aborda gargalos de desempenho comuns encontrados na versão 2, principalmente em relação a atualizações em lote e operações de exclusão de conformidade.

AWS fornece suporte para vetores de exclusão e linhagem de linha, conforme definido na especificação Iceberg versão 3. Esses recursos estão disponíveis com o Apache Spark nas seguintes opções. Serviços da AWS

AWS service (Serviço da AWS) Suporte para a versão 3

Amazon EMR para Apache Spark

Amazon EMR versão 7.12 e versões posteriores

AWS Glue

Sim

AWS Glue: API REST Iceberg, manutenção de tabelas

Sim

Notebooks Amazon SageMaker Unified Studio

Sim

Tabelas do Amazon S3: API REST Iceberg, manutenção de tabelas

Sim

Amazon Athena (Trino)

Não

Principais recursos da versão 3

Os vetores de exclusão substituem os arquivos de exclusão posicional usados na versão 2 por um formato binário eficiente armazenado como arquivos Puffin. Isso elimina a amplificação de gravação de atualizações aleatórias em lote e exclusões de conformidade com o Regulamento Geral de Proteção de Dados (GDPR) e reduz significativamente a sobrecarga de manter 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 menos arquivos pequenos.

A linhagem da linha permite o rastreamento preciso das alterações no nível da linha. Seus sistemas downstream podem processar mudanças 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 versão 3 mantém a compatibilidade com versões anteriores das tabelas da versão 2. Os serviços da AWS oferecem suporte às tabelas da versão 2 e da versão 3 simultaneamente, para que você possa:

  • Execute consultas nas tabelas da versão 2 e da versão 3.

  • Atualize as tabelas existentes da versão 2 para a versão 3 sem reescrever dados.

  • Execute consultas de viagem no tempo que abrangem instantâneos da versão 2 e da versão 3.

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

Começando com a versão 3

Pré-requisitos

Antes de trabalhar com as tabelas da versão 3, verifique se você tem:

  • E Conta da AWS com as permissões apropriadas AWS Identity and Access Management (IAM).

  • Acesso a um ou mais serviços de AWS análise (Amazon EMR, notebooks AWS Glue Amazon SageMaker Unified Studio ou tabelas do Amazon S3).

  • Um bucket S3 para armazenar dados e metadados de tabelas.

  • Um bucket de mesa para começar a usar o Amazon S3 Tables ou um bucket S3 de uso geral se você estiver criando sua própria infraestrutura Iceberg.

  • Um AWS Glue catálogo configurado.

Criação de tabelas da versão 3

Criar novas tabelas

Para criar uma nova tabela do Iceberg versão 3, defina a propriedade da format-version tabela como 3.

Usando 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' )

Atualizando as tabelas da versão 2 para a versão 3

Você pode atualizar as tabelas existentes da versão 2 para a versão 3 atomicamente sem reescrever os dados.

Usando o Spark SQL:

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

A versão 3 é uma atualização unidirecional. Depois que uma tabela é atualizada da versão 2 para a versão 3, ela não pode ser rebaixada para a versão 2 por meio de operações padrão.

O que acontece durante a atualização:

  • Um novo instantâneo de metadados é criado atomicamente.

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

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

Após a atualização:

  • A próxima compactação removerá os arquivos de exclusão da versão 2 antiga.

  • Novas modificações usarão os arquivos vetoriais de exclusão da versão 3.

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

Ativando vetores de exclusão

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

Usando 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 vetoriais de exclusão em vez de reescrever arquivos de dados inteiros.

Usando linhagem de linha para rastreamento de alterações

A versão 3 adiciona automaticamente campos de metadados de linhagem de linha para rastrear as alterações.

Usando 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 _row_id campo identifica de forma exclusiva cada linha e _last_updated_sequence_number rastreia quando a linha foi modificada pela última vez. Use esses campos para:

  • Identifique as linhas alteradas para processamento incremental.

  • Rastreie a linhagem de dados para fins de conformidade.

  • Otimize os pipelines do CDC.

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

Práticas recomendadas para a versão 3

Quando usar a versão 3

Considere atualizar para a versão 3 ou começar com ela quando:

  • Você realiza atualizações ou exclusões frequentes em lote.

  • Você precisa atender aos requisitos de exclusão do GDPR ou de conformidade.

  • Suas cargas de trabalho envolvem interrupções de alta frequência.

  • Você precisa de fluxos de trabalho eficientes do CDC.

  • Você quer reduzir os custos de armazenamento de arquivos pequenos.

  • Você precisa de melhores recursos de rastreamento de alterações.

Otimizando o desempenho de gravação

  • Ative vetores de exclusão para cargas de trabalho com muitas atualizações:

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

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

Otimizando o desempenho de leitura

  • Use linhagem de linha para processamento incremental.

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

  • Habilite a coleta de estatísticas para um melhor planejamento de consultas.

Estratégia de migração

Ao migrar da versão 2 para a versão 3, siga estas melhores práticas:

  • Teste primeiro em um ambiente que não seja de produção para validar o processo de upgrade e o desempenho.

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

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

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

  • Atualize a documentação da sua equipe para refletir os recursos da versão 3.

Considerações sobre compatibilidade

  • Versões do mecanismo — Certifique-se de que todos os mecanismos que acessam a tabela suportem a versão 3.

  • Ferramentas de terceiros — verifique a compatibilidade da sua ferramenta com a versão 3 antes de fazer o upgrade.

  • 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 versão 3.

Solução de problemas

Problemas comuns

Erro: “a versão de formato 3 não é suportada”

  • Verifique se a versão do seu mecanismo é compatível com a versão 3.  Para obter detalhes, consulte a tabela no início desta seção.

  • Verifique a compatibilidade do catálogo.

  • Verifique se você está usando as versões mais recentes do Serviços da AWS.

Degradação do desempenho após a atualização

  • Verifique se não há falhas na compactação. Para obter mais informações, consulte Registro e monitoramento de tabelas do S3 na documentação do Amazon S3.

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

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

    Você pode verificar as propriedades da tabela com o seguinte código:

    DESCRIBE FORMATTED myns.orders_v3
  • Revise sua estratégia de partição. O particionamento excessivo pode levar a arquivos pequenos. Execute a consulta a seguir para obter 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 versão 3.

  • Considere manter as tabelas da versão 2 para ferramentas sem suporte.

  • Entre em contato com o fornecedor da ferramenta para obter o cronograma de suporte da versão 3.

Como obter ajuda

  • Para questões AWS service (Serviço da AWS) específicas, entre em contato com AWS Support.

  • Para obter ajuda da comunidade Iceberg, use o canal Iceberg Slack.

  • Para obter informações sobre como usar Serviços da AWS para gerenciar suas cargas de trabalho de análise, consulte Analytics on AWS.

Preços

Disponibilidade

O suporte à especificação de formato de tabela Iceberg versão 3 está disponível em todos os Regiões da AWS locais em que as tabelas Amazon EMR AWS Glue, AWS Glue Data Catalog, e S3 operam. Para ver a disponibilidade da região, consulte Serviços da AWS por região.

Recursos adicionais do