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 versão 7.12 e versões posteriores |
|
|
Sim |
|
|
AWS Glue: API REST Iceberg, manutenção de tabelas |
Sim |
|
Sim |
|
|
Tabelas do Amazon S3: API REST Iceberg, manutenção de tabelas |
Sim |
|
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