

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 name="table-spec-v3"></a>

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<a name="support-table"></a>


| AWS service (Serviço da AWS) | Suporte para a versão 3 | 
| --- | --- | 
|  [Amazon EMR para Apache Spark](iceberg-emr.md)  |  Amazon EMR versão 7.12 e versões posteriores  | 
|  [AWS Glue](iceberg-glue.md)  |  Sim  | 
|  AWS Glue: [API REST Iceberg](https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html), manutenção de tabelas  |  Sim  | 
|  [Notebooks Amazon SageMaker Unified Studio](https://docs.aws.amazon.com/next-generation-sagemaker/)  |  Sim  | 
|  [Tabelas do Amazon S3: [API REST Iceberg](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-open-source.html), manutenção de tabelas](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance-overview.html)  |  Sim  | 
|  [Amazon Athena (Trino)](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html)  |  Não  | 

## Principais recursos da versão 3
<a name="v3-features"></a>

**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. 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 name="v3-version-compatibility"></a>

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
<a name="v3-getting-started"></a>

### Pré-requisitos
<a name="v3-prerequisites"></a>

Antes de trabalhar com 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 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
<a name="v3-creating-tables"></a>

#### Criar novas tabelas
<a name="v3-new-tables"></a>

Para criar uma nova tabela do Iceberg versão 3, defina a propriedade da `format-version` tabela 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'
)
```

#### Atualizando as tabelas da versão 2 para a versão 3
<a name="v3-upgrading-tables"></a>

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

Usar 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 ocorre 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
<a name="v3-deletion-vector"></a>

Para aproveitar os vetores de exclusão para atualizações, exclusões e mesclagens, configure seu 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 vetoriais de exclusão em vez de reescrever arquivos de dados inteiros.

### Usando linhagem de linha para rastreamento de alterações
<a name="v3-deletion-vector"></a>

A versão 3 adiciona automaticamente campos de metadados de linhagem de linha para rastrear as 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 `_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
<a name="v3-best-practices"></a>

### Quando usar a versão 3
<a name="v3-when-to-use"></a>

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
<a name="v3-write-performance"></a>
+ 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 tamanhos de arquivo apropriados:

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

### Otimizando o desempenho de leitura
<a name="v3-read-performance"></a>
+ 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
<a name="v3-migration"></a>

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
<a name="v3-compatibility"></a>
+ 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
<a name="v3-troubleshooting"></a>

### Problemas comuns
<a name="v3-common-issues"></a>

**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](#support-table) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-monitoring-overview.html) 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'
  )
  ```

  É possível 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
<a name="v3-help"></a>
+ Para questões AWS service (Serviço da AWS) específicas, entre em contato com [AWS Support](https://aws.amazon.com/contact-us/).
+ Para obter ajuda da comunidade Iceberg, use o canal [Iceberg Slack](https://iceberg.apache.org/community/).
+ Para obter informações sobre como usar Serviços da AWS para gerenciar suas cargas de trabalho de análise, consulte [Analytics on AWS](https://aws.amazon.com/big-data/datalakes-and-analytics/).

## Preços
<a name="v3-pricing"></a>
+ [Preços de computação e armazenamento do Amazon EMR](https://aws.amazon.com/emr/pricing/)
+ [ SageMakerPreços da Amazon](https://aws.amazon.com/sagemaker/pricing/)
+ [AWS Glue execução do trabalho e preços do catálogo de dados](https://aws.amazon.com/glue/pricing/)
+ [Preços de armazenamento e solicitações de tabelas do S3](https://aws.amazon.com/s3/pricing/)

## Disponibilidade
<a name="v3-availability"></a>

O suporte à especificação de formato de tabela Iceberg versão 3 está disponível em todos os Regiões da AWS locais onde as tabelas Amazon EMR AWS Glue, AWS Glue Data Catalog, e S3 operam. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Recursos adicionais do
<a name="v3-resources"></a>
+ [Documentação do Apache Iceberg](https://iceberg.apache.org/docs/latest/)
+ [Especificação da tabela Apache Iceberg](https://iceberg.apache.org/spec/)
+ [Orientação para migrar dados tabulares do Amazon S3 para tabelas do S3](https://aws.amazon.com/solutions/guidance/migrating-tabular-data-from-amazon-s3-to-s3-tables/)
+ [Tutorial: Introdução às tabelas do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-getting-started.html)