

# Preencher e gerenciar tabelas transacionais
<a name="populate-otf"></a>

O [Apache Iceberg](https://iceberg.apache.org/), o [Apache Hudi](https://hudi.incubator.apache.org/) e o Linux Foundation [Delta Lake](https://delta.io/) são formatos de tabela de código aberto projetados para lidar com data analytics em grande escala e workloads de data lake no Apache Spark. 

Você pode preencher as tabelas do Iceberg, Hudi e Delta Lake no AWS Glue Data Catalog usando os seguintes métodos: 
+ Crawler do AWS Glue: os Crawler do AWS Glues podem descobrir e preencher automaticamente os metadados das tabelas do Iceberg, Hudi e Delta Lake no Catálogo de Dados. Para obter mais informações, consulte [Usar crawlers para preencher o catálogo de dados](add-crawler.md).
+ Trabalhos do AWS Glue ETL: é possível criar trabalhos de ETL para gravar dados nas tabelas do Iceberg, Hudi e Delta Lake e preencher seus metadados no Catálogo de Dados. Para obter mais informações, consulte [Usar estruturas de data lake com trabalhos do AWS Glue ETL](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html).
+ Console do AWS Glue, console do AWS Lake Formation, AWS CLI ou API: você pode usar o console do AWS Glue, o console do Lake Formation ou a API da para criar e gerenciar definições de tabelas do Iceberg no Catálogo de Dados.

**Topics**
+ [Criar tabelas no Apache Iceberg](#creating-iceberg-tables)
+ [Otimizar tabelas Iceberg](table-optimizers.md)
+ [Otimizar a performance da consulta para tabelas Iceberg](iceberg-column-statistics.md)

## Criar tabelas no Apache Iceberg
<a name="creating-iceberg-tables"></a>

Agora você pode criar tabelas do Apache Iceberg que usam o formato de dados do Apache Parquet no AWS Glue Data Catalog com dados residentes no Amazon S3. Uma tabela no catálogo de dados é a definição de metadados que representa os dados em um armazenamento de dados. Por padrão, o AWS Glue cria tabelas do Iceberg v2. Para saber a diferença entre as tabelas da v1 e v2, consulte [Alterações de versão do formato](https://iceberg.apache.org/spec/#appendix-e-format-version-changes) na documentação do Apache Iceberg.

 [Apache Iceberg](https://iceberg.apache.org/) é um formato de tabela aberta para conjuntos de dados analíticos muito grandes. O Iceberg permite mudanças fáceis em seu esquema, também conhecido como evolução do esquema, o que significa que os usuários podem adicionar, renomear ou remover colunas de uma tabela de dados sem interromper os dados subjacentes. O Iceberg também fornece suporte para controle de versão de dados, o que permite que os usuários acompanhem as alterações nos dados ao longo do tempo. Isso ativa o atributo de viagem no tempo, que permite que os usuários acessem e consultem versões históricas dos dados e analisem as alterações nos dados entre atualizações e exclusões.

Você pode usar o AWS Glue, o console do Lake Formation ou a operação `CreateTable` na API do AWS Glue para criar uma tabela do Iceberg no Catálogo de Dados. Para obter mais informações, consulte a ação [CreateTable (Python: create\$1table)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable).

Ao criar uma tabela do Iceberg no catálogo de dados, você deve especificar o formato da tabela e o caminho do arquivo de metadados no Amazon S3 para poder realizar leituras e gravações.

 Você pode usar o Lake Formation para proteger sua tabela do Iceberg usando permissões de controle de acesso refinadas ao registrar a localização de dados do Amazon S3 com o AWS Lake Formation. Para dados de origem no Amazon S3 e metadados que não estão registrados no Lake Formation, o acesso é determinado pelas políticas de permissões do IAM para ações do Amazon S3 e do AWS Glue. Para obter mais informações, consulte [Gerenciar permissões](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html). 

**nota**  
O catálogo de dados não oferece suporte à criação de partições e à adição de propriedades da tabela do Iceberg.

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

 Para criar tabelas Iceberg no catálogo de dados e configurar as permissões de acesso aos dados do Lake Formation, você precisa preencher os seguintes requisitos: 

1. 

**Permissões necessárias para criar tabelas do Iceberg sem os dados registrados no Lake Formation.**

   Além das permissões necessárias para criar uma tabela no catálogo de dados, o criador da tabela precisa as seguintes permissões:
   + `s3:PutObject` no recurso arn:aws:s3:::\$1bucketName\$1
   + `s3:GetObject` no recurso arn:aws:s3:::\$1bucketName\$1
   + `s3:DeleteObject` no recurso arn:aws:s3:::\$1bucketName\$1

1. 

**Permissões necessárias para criar tabelas do Iceberg com dados registrados no Lake Formation:**

   Para usar o Lake Formation para gerenciar e proteger os dados em seu data lake, registre sua localização no Amazon S3 que tenha os dados para tabelas com o Lake Formation. Isso é para que a Lake Formation possa fornecer credenciais para serviços analíticos AWS como Athena, Redshift Spectrum e Amazon EMR para acessar dados. Para obter mais informações sobre o registro de um local do Amazon S3, consulte [Adicionar um local do Amazon S3 ao seu data lake](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html). 

   Uma entidade principal que lê e grava os dados subjacentes registrados no Lake Formation exige as seguintes permissões:
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     Uma entidade principal que tem permissões de localização de dados em um local também tem permissões de localização em todos os locais secundários.

     Para obter mais informações sobre permissões de localização de dados, consulte [Controle de acesso a dados subjacente](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html#data-location-permissions).

 Para permitir a compactação, o serviço precisa assumir um perfil do IAM que tenha permissões para atualizar tabelas no catálogo de dados. Para obter detalhes, consulte [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md) 

### Criar uma tabela no Iceberg
<a name="create-iceberg-table"></a>

Você pode criar tabelas do Iceberg v1 e v2 usando o AWS Glue, o console do Lake Formation ou a AWS Command Line Interface conforme documentado nesta página. Você também pode criar tabelas do Iceberg usando o Crawler do AWS Glue. Para obter mais informações, consulte [Catálogo de dados e crawlers](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) no Guia do desenvolvedor do AWS Glue.

**Para criar uma tabela no Iceberg**

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Em catálogo de dados, escolha **Tabelas** e use o botão **Criar tabela** para especificar os seguintes atributos:
   + **Nome da tabela**: insira um nome para a tabela. Se você estiver usando o Athena para acessar tabelas, use essas [dicas de nomenclatura](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html) no Guia do usuário do Amazon Athena.
   + **Banco de dados**: escolha um banco de dados existente ou crie um novo.
   + **Descrição**: a descrição da tabela. Você pode escrever uma descrição para ajudá-lo a entender o conteúdo da tabela.
   + **Formato da tabela**: para **Formato da tabela**, escolha Apache Iceberg.
   + **Ativar compactação**: escolha **Ativar compactação** para compactar objetos pequenos do Amazon S3 na tabela em objetos maiores.
   + **Perfil do IAM**: para executar a compactação, o serviço assume um perfil do IAM em seu nome. Você pode escolher um perfil do IAM usando o menu suspenso. Certifique-se de que a função tenha as permissões necessárias para habilitar a compactação.

     Para saber mais sobre as permissões necessárias, consulte [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md).
   + **Localização**: especifique o caminho para a pasta no Amazon S3 que armazena a tabela de metadados. O Iceberg precisa de um arquivo de metadados e de um local no catálogo de dados para poder realizar leituras e gravações.
   + **Esquema**: escolha **Adicionar colunas** para adicionar colunas e tipos de dados das colunas. Você tem a opção de criar uma tabela vazia e atualizar o esquema posteriormente. O catálogo de dados oferece suporte aos tipos de dados do Hive. Para obter mais informações, consulte [Tipos de dados do Hive](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462). 

      O Iceberg permite que você evolua o esquema e a partição depois de criar a tabela. Você pode usar as [consultas do Athena](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html) para atualizar o esquema da tabela e as consultas do [Spark](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions) para atualizar as partições. 

------
#### [ AWS CLI ]

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

**Topics**
+ [Pré-requisitos](#iceberg-prerequisites)
+ [Criar uma tabela no Iceberg](#create-iceberg-table)

# Otimizar tabelas Iceberg
<a name="table-optimizers"></a>

O AWS Glue é compatível com várias opções de otimização de tabela para aprimorar o gerenciamento e a performance das tabelas do Apache Iceberg usadas pelos mecanismos analíticos da AWS e pelos trabalhos de ETL. Esses otimizadores fornecem utilização eficiente do espaço em disco, melhor performance de consultas e gerenciamento de dados. Existem três tipos de otimizadores de tabela disponíveis no AWS Glue: 
+ **Compactação**: a compactação de dados compacta pequenos arquivos de dados para reduzir o uso de armazenamento e melhorar a performance de leitura. Os arquivos de dados são mesclados e regravados para remover dados obsoletos e consolidar dados fragmentados em arquivos maiores e mais eficientes. Você pode configurar a compactação para execução automática. 

  O binpack é a estratégia de compactação padrão no Apache Iceberg. Ela combina arquivos de dados menores em arquivos maiores para um desempenho ideal. A compactação também é compatível com estratégias de classificação e ordem Z que agrupam em cluster dados semelhantes. A classificação organiza os dados com base em colunas especificadas, melhorando o desempenho da consulta para operações filtradas. A ordem Z cria conjuntos de dados ordenados que melhoram o desempenho da consulta quando várias colunas são consultadas simultaneamente. Todas as três estratégias de compactação (binpack, classificação e ordem Z) reduzem a quantidade de dados varridos pelos mecanismos de consulta, reduzindo os custos de processamento de consultas.
+ **Retenção de snapshots**: os snapshots são versões com carimbo de data e hora de uma tabela do Iceberg. As configurações de retenção de snapshots permitem que os clientes determinem por quanto tempo reter e quantos snapshots devem ser retidos. A configuração de um otimizador de retenção de snapshots pode ajudar a gerenciar a sobrecarga de armazenamento removendo snapshots antigos e desnecessários e seus arquivos subjacentes.
+ **Exclusão de arquivos órfãos**: arquivos órfãos são arquivos que não são mais referidos pelos metadados da tabela do Iceberg. Esses arquivos podem se acumular ao longo do tempo, especialmente após operações como exclusões de tabelas ou trabalhos de ETL com falha. Habilitar a exclusão de arquivos órfãos permite que o AWS Glue identifique e remova periodicamente esses arquivos desnecessários, liberando espaço de armazenamento.

A configuração da otimização no nível do catálogo está disponível no console do Lake Formation e usando a operação da API `UpdateCatalog` do AWS Glue. É possível habilitar ou desabilitar a compactação, a retenção de snapshots e os otimizadores de exclusão de arquivos órfãos para tabelas Iceberg individuais usando o console do AWS Glue, a AWS CLI ou as operações de API do AWS Glue. 

 O vídeo a seguir demonstra como configurar otimizadores para tabelas do Iceberg no Catálogo de dados. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn)


**Topics**
+ [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md)
+ [Otimizadores de tabelas em nível de catálogo](catalog-level-optimizers.md)
+ [Otimização de compactação](compaction-management.md)
+ [Otimização de retenção de snapshots](snapshot-retention-management.md)
+ [Excluir arquivos órfãos](orphan-file-deletion.md)
+ [Visualizar detalhes da otimização](view-optimization-status.md)
+ [Visualizar métricas do Amazon CloudWatch](view-optimization-metrics.md)
+ [Excluindo um otimizador](delete-optimizer.md)
+ [Considerações e limitações](optimizer-notes.md)
+ [Regiões compatíveis para otimizadores de tabela](regions-optimizers.md)

# Pré-requisitos de otimização de tabelas
<a name="optimization-prerequisites"></a>

O otimizador de tabela assume as permissões do perfil do AWS Identity and Access Management (IAM) que você especificou ao habilitar as opções de otimização (compactação, retenção de snapshot e exclusão de arquivos órfãos) para uma tabela. Você pode criar um único perfil para todos os otimizadores ou criar perfis separados para cada otimizador.

**nota**  
O otimizador de exclusão de arquivos órfãos não exige as permissões `glue:updateTable` ou `s3:putObject`. Os otimizadores de expiração e compactação de snapshots exigem o mesmo conjunto de permissões.

O perfil do IAM deve ter as permissões para ler dados e atualizar metadados no catálogo de dados. Você pode criar um perfil do IAM e anexar as políticas em linha a seguir:
+ Adicione a seguinte política em linha que concede ao Amazon S3 permissões de leitura/gravação no local para dados que não estão registrados no AWS Lake Formation. Essa política também inclui permissões para atualizar a tabela no catálogo de dados e permitir que o AWS Glue adicione logs em logs do Amazon CloudWatch e a publicação de métricas. Para dados de origem no Amazon S3 que não estão registrados no Lake Formation, o acesso é determinado pelas políticas de permissões do IAM para o Amazon S3 e ações AWS Glue. 

  Nas políticas em linha a seguir, substitua `bucket-name` pelo nome do bucket do Amazon S3, `aws-account-id` e `region` por um número de conta da AWS e por uma região do catálogo de dados válidos, `database_name` pelo nome do seu banco de dados e `table_name` pelo nome da tabela.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/*"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "glue:UpdateTable",
                  "glue:GetTable"
              ],
              "Resource": [
                  "arn:aws:glue:us-east-1:111122223333:table/<database-name>/<table-name>",
                  "arn:aws:glue:us-east-1:111122223333:database/<database-name>",
                  "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": [
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
              ]
          }
      ]
  }
  ```

------
+ Use a política a seguir para habilitar a compactação de dados registrados no Lake Formation. 

  Se o perfil de otimização não tiver permissões do grupo `IAM_ALLOWED_PRINCIPALS` concedidas na tabela, ele exigirá as permissões `ALTER`, `DESCRIBE`, `INSERT` e `DELETE` do Lake Formation na tabela. 

  Para obter mais informações sobre o registro de um bucket do Amazon S3 com o Lake Formation, consulte [Adicionar um local do Amazon S3 ao seu data lake](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html).

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:GetDataAccess"
        ],
        "Resource": "*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "glue:UpdateTable",
          "glue:GetTable"
        ],
        "Resource": [
          "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
          "arn:aws:glue:us-east-1:111122223333:database/databaseName",
          "arn:aws:glue:us-east-1:111122223333:catalog"
        ]
      },
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogGroup",
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": [
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
        ]
      }
    ]
  }
  ```

------
+ (Opcional) Para otimizar tabelas Iceberg com dados em buckets criptografados do Amazon S3 usando [criptografia no lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html), o perfil de compactação exigirá permissões para descriptografar objetos do Amazon S3 e gerar uma nova chave de dados para gravar objetos nos buckets criptografados. Adicione a seguinte política à chave do AWS KMS desejada. Oferecemos suporte somente à criptografia em nível de bucket.

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::<aws-account-id>:role/<optimizer-role-name>"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
  ```
+  (Opcional) Para locais de dados registrados no Lake Formation, o perfil usado para registrar a localização exige permissões para descriptografar objetos do Amazon S3 e gerar uma nova chave de dados para gravar objetos nos buckets criptografados. Para obter mais informações, consulte [Registrar um local do Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-encrypted.html). 
+ (Opcional) Se a chave do AWS KMS estiver armazenada em uma conta da AWS diferente, você precisará incluir as permissões a seguir no perfil de compactação.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
        ],
        "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ]
      }
    ]
  }
  ```

------
+  A função que você usa para executar a compactação deve ter a permissão `iam:PassRole` da função. 

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": [
          "arn:aws:iam::111122223333:role/<optimizer-role-name>"
        ]
      }
    ]
  }
  ```

------
+ Adicione a política de confiança a seguir à função para que o serviço AWS Glue assuma o perfil do IAM para executar o processo de compactação.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "glue.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------
+ <a name="catalog-optimizer-requirement"></a> (Opcional) Para atualizar as configurações do Catálogo de dados para habilitar otimizações de tabela no nível do catálogo, o perfil do IAM utilizado deve ter a permissão `glue:UpdateCatalog` ou a permissão AWS Lake Formation `ALTER CATALOG` no catálogo raiz. É possível usar a API `GetCatalog` para verificar as propriedades do catálogo. 

# Otimizadores de tabelas em nível de catálogo
<a name="catalog-level-optimizers"></a>

Com uma configuração única do catálogo, você pode definir otimizadores automáticos, como compactação, retenção de snapshot e exclusão de arquivos órfãos para todas as tabelas do Apache Iceberg novas e atualizadas no AWS Glue Data Catalog. As configurações do otimizador no nível do catálogo permitem aplicar configurações consistentes do otimizador em todas as tabelas de um catálogo, eliminando a necessidade de configurar otimizadores individualmente para cada tabela.

Os administradores do data lake podem configurar os otimizadores de tabela selecionando o catálogo padrão no console do Lake Formation e habilitando os otimizadores usando a opção `Table optimization`. Quando você cria novas tabelas ou atualiza tabelas existentes no Catálogo de dados, este executa automaticamente as otimizações da tabela para reduzir a carga operacional.

Se você configurou a otimização no nível da tabela ou se excluiu anteriormente as configurações de otimização de uma tabela, essas configurações específicas da tabela terão precedência sobre as configurações padrão do catálogo para otimização de tabelas. Se um parâmetro de configuração não estiver definido no nível da tabela ou do catálogo, o valor da propriedade da tabela do Iceberg será aplicado. Essa configuração é aplicável à retenção de snapshots e ao otimizador de exclusão de arquivos órfãos.

Ao habilitar otimizadores no nível do catálogo, considere o seguinte:
+ Quando você configura as definições de otimização no momento da criação do catálogo e, posteriormente, desabilita as otimizações por meio de uma solicitação de atualização do catálogo, a operação será aplicada em cascata a todas as tabelas do catálogo.
+ Se você já configurou otimizadores para uma determinada tabela, a operação de desabilitação no nível do catálogo não afetará essa tabela.
+ Quando você desabilita os otimizadores no nível do catálogo, as tabelas com configurações de otimizador existentes mantêm suas configurações específicas e não são afetadas pela alteração no nível do catálogo. No entanto, as tabelas sem suas próprias configurações de otimizador herdarão o estado desabilitado do nível do catálogo.
+ Como os otimizadores de retenção de snapshots e exclusão de arquivos órfãos podem ser baseados em agendamentos, as atualizações introduzirão um atraso aleatório no início do agendamento. Isso fará com que cada otimizador inicie em momentos ligeiramente diferentes, distribuindo a carga e reduzindo a probabilidade de exceder os limites do serviço.
+ As configurações do otimizador em nível de catálogo não são herdadas automaticamente pelas tabelas quando a criptografia AWS Glue Data Catalog está ativada. Se o seu catálogo tiver a criptografia de metadados ativada, você deve configurar os otimizadores de tabela individualmente para cada tabela. Para usar a herança do otimizador no catálogo, a criptografia de metadados deve estar desativada no catálogo.

**Topics**
+ [Habilitar otimização automática de tabelas no nível do catálogo](enable-auto-table-optimizers.md)
+ [Visualizar otimizações no nível do catálogo](view-catalog-optimizations.md)
+ [Desabilitar otimização de tabelas no nível do catálogo](disable-auto-table-optimizers.md)

# Habilitar otimização automática de tabelas no nível do catálogo
<a name="enable-auto-table-optimizers"></a>

 É possível habilitar a otimização automática de tabelas para todas as novas tabelas do Apache Iceberg no Catálogo de dados. Após criar a tabela, você também pode atualizar explicitamente as configurações de otimização da tabela manualmente. 

 Para atualizar as configurações do Catálogo de dados para habilitar otimizações de tabela no nível do catálogo, o perfil do IAM utilizado deve ter permissão `glue:UpdateCatalog` no catálogo raiz. É possível usar a API `GetCatalog` para verificar as propriedades do catálogo. 

 Para as tabelas gerenciadas pelo Lake Formation, o perfil do IAM selecionado durante a configuração de otimização do catálogo requer permissões do Lake Formation `ALTER`, `DESCRIBE`, `INSERT` e `DELETE` para quaisquer tabelas novas ou atualizadas. 

## Para habilitar otimizadores no nível do catálogo (console)
<a name="enable-catalog-optimizers-console"></a>

1. Abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. No painel de navegação, escolha **Catálogo de Dados**.

1. Escolha a guia **Catálogos**.

1. Escolha o catálogo no nível da conta.

1. Escolha **Otimizações da tabela**, **Editar** na guia **Otimizações da tabela**. Você também pode escolher **Editar otimizações** em **Ações**.  
![\[A captura de tela mostra a opção Editar para permitir otimizações no nível do catálogo.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/catalog-edit-optimizations.png)

1. Na página **Otimização de tabelas**, configure estas opções:  
![\[A captura de tela mostra as opções de otimização no nível do catálogo.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/catalog-optimization-options.png)

   1. Defina as configurações de **Compactação**:
      + Habilitar/desabilitar a compactação.
      + Escolha o perfil do IAM com as permissões necessárias para executar os otimizadores.

        Para obter mais informações sobre os requisitos de permissão para o perfil do IAM, consulte [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md).

   1. Defina as configurações de **Retenção de snapshots**:
      + Habilitar/desabilitar a retenção.
      + Defina o período de retenção do snapshot em dias: o padrão é 5 dias.
      + Defina o número de snapshots a serem retidos: o padrão é 1 snapshot.
      + Habilitar/desabilitar a limpeza de arquivos expirados.

   1. Defina configurações de **Exclusão de arquivos órfãos**:
      + Habilitar/desabilitar exclusão de arquivos órfãos.
      + Defina o período de retenção de arquivos órfãos em dias - o padrão é 3 dias.

1. Escolha **Salvar**.

## Habilitando otimizadores em nível de catálogo por meio do AWS CLI
<a name="catalog-auto-optimizers-cli"></a>

Use o seguinte comando da CLI para atualizar um catálogo existente com as configurações do otimizador:

**Example Atualizar catálogo com configurações do otimizador**  

```
aws glue update-catalog \
   --name catalog-id \
  --catalog-input \
  '{
    "CatalogId": "111122223333",
    "CatalogInput": {
        "CatalogProperties": {
            "CustomProperties": {
                "ColumnStatistics.Enabled": "false",
                "ColumnStatistics.RoleArn": "arn:aws:iam::111122223333:role/service-role/stats-role-name"
            },
            "IcebergOptimizationProperties": {
                "RoleArn": "arn:aws:iam::111122223333:role/optimizer-role-name",
                "Compaction": {
                    "enabled": "true"
                },
                "Retention": {
                    "enabled": "true",
                    "snapshotRetentionPeriodInDays": "10",
                    "numberOfSnapshotsToRetain": "5",
                    "cleanExpiredFiles": "true"
                },
                "OrphanFileDeletion": {
                    "enabled": "true",
                    "orphanFileRetentionPeriodInDays": "3"
                }
            }
        }
    }
}'
```

Se você encontrar problemas com otimizadores no nível do catálogo, verifique o seguinte:
+ Certifique-se de que o perfil do IAM tenha as permissões corretas, conforme descrito na seção Pré-requisitos.
+ Verifique os logs do CloudWatch para ver se há mensagens de erro relacionadas às operações do otimizador.

   Para obter mais informações, consulte [Visualizar métricas disponíveis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) no *Guia do usuário do Amazon CloudWatch*. 
+ Verifique se as configurações do catálogo foram aplicadas com êxito, conferindo a configuração do catálogo.
+ Para falhas no acesso à tabela, verifique os logs do CloudWatch e as notificações do EventBridge para obter informações detalhadas sobre o erro.

# Visualizar otimizações no nível do catálogo
<a name="view-catalog-optimizations"></a>

 Quando a otimização da tabela no nível do catálogo está habilitada, sempre que uma tabela do Apache Iceberg é criada ou atualizada por meio das APIs `CreateTable` ou `UpdateTable` por meio d Console de gerenciamento da AWS, do SDK ou da Crawler do AWS Glue, uma configuração equivalente no nível da tabela é criada para essa tabela. 

 Depois de criar ou atualizar uma tabela, você pode verificar os detalhes da tabela para confirmar sua otimização. A `Table optimization` mostra a propriedade `Configuration source` definida como `Catalog`. 

![\[Uma imagem de uma tabela do Apache Iceberg com configuração de otimização em nível de catálogo foi aplicada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/catalog-optimization-enabled.png)


# Desabilitar otimização de tabelas no nível do catálogo
<a name="disable-auto-table-optimizers"></a>

 É possível desabilitar a otimização de tabelas para novas tabelas usando o console do AWS Lake Formation e a API `glue:UpdateCatalog`. 

**Para desabilitar as otimizações de tabela no nível do catálogo**

1. Abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. No painel de navegação à esquerda, escolha **Catálogos)**.

1. Na página **Resumo do catálogo**, selecione **Editar** em **Otimizações da tabela**.

1. Na página **Editar otimização**, desmarque **Opções de otimização**.

1. Escolha **Salvar**.

# Otimização de compactação
<a name="compaction-management"></a>

 Os data lakes do Amazon S3 usando formatos de tabela aberta, como o Apache Iceberg, armazenam dados como objetos do S3. Ter milhares de pequenos objetos do Amazon S3 em uma tabela de data lake aumenta a sobrecarga de metadados e afeta a performance de leitura. O AWS Glue Data Catalog fornece compactação gerenciada para tabelas Iceberg, compactando objetos pequenos em objetos maiores para melhor performance de leitura por meio de serviços de analytics da AWS, como o Amazon Athena e o Amazon EMR, e trabalhos de ETL do AWS Glue. O Catálogo de Dados executa compactação sem interferir nas consultas simultâneas e é compatível com compactação somente para tabelas no formato Parquet. 

O otimizador de tabelas monitora constantemente as partições da tabela e inicia o processo de compactação quando o limite é excedido para o número de arquivos e tamanhos de arquivo.

No Catálogo de Dados, o processo de compactação começa quando uma tabela ou qualquer uma de suas partições tem mais de 100 arquivos. Cada arquivo deve ser menor que 75% do tamanho do arquivo de destino. O tamanho do arquivo de destino é definido pela propriedade `write.target-file-size-bytes` da tabela, cujo padrão é 512 MB caso não tenha sido definido explicitamente.

 Para conhecer as limitações, consulte [Formatos e limitações compatíveis para compactação gerenciada de dados](optimizer-notes.md#compaction-notes). 

**Topics**
+ [Habilitar o otimizador de compactação](enable-compaction.md)
+ [Desabilitar o otimizador de compactação](disable-compaction.md)

# Habilitar o otimizador de compactação
<a name="enable-compaction"></a>

 Você pode usar o console do AWS Glue, a AWS CLI, ou a API da AWS para habilitar a compactação de tabelas Apache Iceberg no Catálogo de Dados do AWS Glue. Para novas tabelas, você pode escolher o Apache Iceberg como formato de tabela e ativar a compactação ao criar a tabela. A compactação está desabilitada por padrão para novas tabelas.

------
#### [ Console ]

**Para habilitar compactação**

1.  Abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e faça login como administrador do data lake, criador da tabela ou um usuário que tenha recebido as permissões `glue:UpdateTable` e `lakeformation:GetDataAccess` na tabela. 

1. No painel de navegação, em **Catálogo de dados**, escolha **Tabelas**.

1. Na página **Tabelas**, escolha uma tabela em formato de tabela aberta para a qual você deseja habilitar a compactação e, em seguida, no menu **Ações**, escolha **Optimização** e **Habilitar**.

   Você também pode habilitar a compactação selecionando a tabela **Otimização de tabela** e abrindo a página **Detalhes da tabela**. Escolha a guia **Otimização de tabela** na seção inferior da página e escolha **Ativar compactação**. 

   A opção **Ativar otimização** também está disponível ao criar uma nova tabela Iceberg no Catálogo de Dados.

1. Na página **Habilitar otimização**, escolha **Compactação** em **Opções de otimização**.  
![\[Página de detalhes da tabela do Apache Iceberg com a opção Ativar compactação.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/table-enable-compaction.png)

1. Em seguida, selecione um perfil do IAM na lista suspensa com as permissões mostradas na seção [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md). 

   Você também pode escolher a opção **Criar um novo perfil do IAM** para criar um perfil personalizado com as permissões necessárias para executar a compactação.

    Siga as etapas abaixo para atualizar um perfil do IAM existente: 

   1.  Para atualizar a política de permissões para o perfil do IAM, no console do IAM, acesse a função do IAM que está sendo usada para executar a compactação. 

   1.  Na seção **Adicionar permissões**, escolha Criar política. Na janela recém-aberta do navegador, crie uma nova política para usar com sua função. 

   1. Na página Criar política, escolha a guia `JSON`. Copie o código JSON mostrado nos Pré-requisitos no campo do editor de políticas.

1. Se você tiver configurações de política de segurança em que o otimizador de tabelas do Iceberg precise acessar buckets do Amazon S3 de uma Nuvem Privada Virtual (VPC) específica, crie uma conexão de rede do AWS Glue ou use uma existente.

   Se você ainda não tiver uma conexão VPC do AWS Glue configurada, crie uma seguindo as etapas na seção [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) usando o console do AWS Glue ou a AWS CLI/o SDK.

1. Escolha uma estratégia de compactação. As opções disponíveis são:
   + **Binpack**: binpack é a estratégia de compactação padrão no Apache Iceberg. Ela combina arquivos de dados menores em arquivos maiores para um desempenho ideal.
   + **Sort**: a classificação no Apache Iceberg é uma técnica de organização de dados que agrupa em cluster informações em arquivos com base em colunas especificadas, melhorando significativamente o desempenho da consulta ao reduzir o número de arquivos que precisam ser processados. Você define a ordem de classificação nos metadados do Iceberg usando o campo sort-order e, quando houver a especificação de várias colunas, os dados são classificados na sequência em que as colunas aparecem na ordem de classificação, garantindo que registros com valores semelhantes sejam armazenados juntos nos arquivos. A estratégia de compactação de classificação promove ainda mais otimização ao classificar os dados em todos os arquivos dentro de uma partição. 
   + **Z-order**: a ordenação Z é uma forma de organizar dados quando você precisa classificar por várias colunas com importância igual. Diferentemente da classificação tradicional que prioriza uma coluna em detrimento de outras, a ordenação Z dá um peso equilibrado a cada coluna, ajudando seu mecanismo de consulta a ler menos arquivos ao pesquisar dados.

     A técnica funciona entrelaçando os dígitos binários dos valores de diferentes colunas. Por exemplo, se você tiver os números 3 e 4 de duas colunas, primeiro a ordenação Z os converte em binário (3 vira 011 e 4 vira 100) e, em seguida, intercala esses dígitos para criar um novo valor: 011010. Essa intercalação cria um padrão que mantém os dados relacionados fisicamente próximos uns dos outros.

     A ordenação Z é particularmente eficaz para consultas multidimensionais. Por exemplo, uma tabela de clientes com ordenação em Z por renda, estado e código postal pode oferecer desempenho superior em comparação à classificação hierárquica ao fazer consultas em várias dimensões. Essa organização permite que consultas direcionadas a combinações específicas de renda e localização geográfica localizem rapidamente dados relevantes e, ao mesmo tempo, minimizem varreduras desnecessárias de arquivos.

1. **Arquivos de entrada mínimos**: o número de arquivos de dados necessários em uma partição antes que a compactação seja acionada.

1. **Limite de exclusão de arquivos**: operações mínimas de exclusão necessárias em um arquivo de dados antes que ele se torne elegível para compactação.

1. Escolha **Habilitar otimização**.

------
#### [ AWS CLI ]

 O exemplo a seguir mostra como habilitar a compactação. Substitua o ID da conta por um ID de conta da AWS válido. Substitua o nome do banco de dados e o nome da tabela pelo nome real da tabela do Iceberg e pelo nome do banco de dados. Substitua o `roleArn` pelo nome do recurso (ARN) AWS do perfil do IAM e o nome do perfil do IAM que tem as permissões necessárias para executar a compactação. Você pode substituir a estratégia de compactação `sort` por outras estratégias compatíveis, como `z-order` ou `binpack`.

order” dependendo dos seus requisitos.

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{
    "roleArn": "arn:aws:iam::123456789012:role/optimizer_role",
    "enabled": true,
    "vpcConfiguration": {"glueConnectionName": "glue_connection_name"},
    "compactionConfiguration": {
      "icebergConfiguration": {"strategy": "sort"}
    }
  }'\
--type compaction
```

------
#### [ AWS API ]

Chame a operação [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para ativar a compactação de uma tabela.

------

Após habilitar a compactação, a guia **Otimização da tabela** mostrará os seguintes detalhes da compactação após a conclusão da execução da compactação:

Hora de início  
A hora em que o processo de compactação iniciou no Catálogo de Dados. O valor é um timestamp no horário UTC. 

End Time  
A hora em que o processo de compactação terminou no catálogo de dados. O valor é um timestamp no horário UTC. 

Status  
O status de execução da compactação. Os valores são sucesso ou falha.

Arquivos compactados  
Número total de arquivos compactados.

Bytes compactados  
Número total de bytes compactados.

# Desabilitar o otimizador de compactação
<a name="disable-compaction"></a>

 Você pode desativar a compactação automática para uma tabela específica do Apache Iceberg usando o console do AWS Glue ou a AWS CLI. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. No painel de navegação, em **Catálogo de dados**, escolha **Tabelas**. 

1. Na lista de tabelas, escolha a tabela Iceberg da qual você deseja desabilitar a compactação.

1. Selecione a guia **Otimização de tabela** na seção inferior da página **Detalhes da tabela**.

1. Em **Ações**, escolha **Desativar** e, em seguida, escolha **Compactação**.

1.  Escolha **Desativar compactação** na mensagem de confirmação. Você poderá reabilitar a compactação mais tarde. 

    Após a confirmação, a compactação é desativada e o status de compactação da tabela volta para `Disabled`.

------
#### [ AWS CLI ]

No exemplo a seguir, substitua o ID da conta por um ID de conta da AWS válido. Substitua o nome do banco de dados e o nome da tabela pelo nome real da tabela do Iceberg e pelo nome do banco de dados. Substitua o `roleArn` pelo nome do recurso (ARN) AWS do perfil do IAM e o nome real do perfil do IAM que tem as permissões necessárias para executar a compactação.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}}'\ 
  --type compaction
```

------
#### [ AWS API ]

Chame a operação [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para desabilitar a compactação para uma tabela específica.

------

# Otimização de retenção de snapshots
<a name="snapshot-retention-management"></a>

O recurso de retenção de snapshots do Apache Iceberg permite que os usuários consultem dados históricos em momentos específicos e revertam modificações indesejadas em suas tabelas. No Catálogo de Dados do AWS Glue, a configuração de retenção de snapshots controla por quanto tempo esses snapshots (versões dos dados da tabela) são mantidos antes de expirarem e serem removidos. Isso ajuda a gerenciar os custos de armazenamento e a sobrecarga de metadados removendo automaticamente os snapshots antigos com base em um período de retenção configurado ou no número máximo de snapshots a serem mantidos. 

Você pode configurar o período de retenção em dias e o número máximo de snapshots a serem retidos em uma tabela. O AWS Glue remove os snapshots mais antigos do que o período de retenção especificado dos metadados da tabela, enquanto mantém os snapshots mais recentes até o limite configurado. Depois de remover os snapshots antigos dos metadados, o AWS Glue exclui os dados e os arquivos de metadados correspondentes que não são mais relacionados e que são exclusivos dos snapshots expirados. Isso permite consultas de viagem no tempo somente até os snapshots retidos restantes, enquanto recupera o espaço de armazenamento usado pelos dados de snapshots expirados.

**Topics**
+ [Habilitar o otimizador de retenção de snapshots](enable-snapshot-retention.md)
+ [Atualizar o otimizador de retenção de snapshots](update-snapshot-retention.md)
+ [Desabilitar o otimizador de retenção de snapshots](disable-snapshot-retention.md)

# Habilitar o otimizador de retenção de snapshots
<a name="enable-snapshot-retention"></a>

 Você pode usar o console do AWS Glue, a AWS CLI ou a API da AWS para habilitar os otimizadores de retenção de snapshots nas suas tabelas Apache Iceberg no Catálogo de Dados. Para novas tabelas, você pode escolher Apache Iceberg como o formato de tabela e habilitar o otimizador de retenção de snapshots ao criar a tabela. A retenção de snapshots está desabilitada por padrão para novas tabelas.

------
#### [ Console ]

**Para habilitar o otimizador de retenção de snapshots**

1.  Abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e faça login como administrador do data lake, criador da tabela ou um usuário que tenha recebido as permissões `glue:UpdateTable` e `lakeformation:GetDataAccess` na tabela. 

1. No painel de navegação, em **Catálogo de dados**, escolha **Tabelas**.

1. Na página **Tabelas**, escolha uma tabela Iceberg para a qual você deseja habilitar o otimizador de retenção de snapshots e, no menu **Ações**, escolha **Habilitar** em **Otimização**.

   Você também pode habilitar a otimização selecionando a tabela e abrindo a página **Detalhes da tabela**. Escolha a guia **Otimização de tabela** na seção inferior da página e depois **Habilitar a retenção de snapshots**. 

1. Na página **Habilitar otimização**, em **Configuração da otimização**, você tem duas opções: **Usar configuração padrão** ou **Personalizar configurações**. Se você optar por usar as configurações padrão, o AWS Glue utiliza as propriedades definidas na configuração da tabela Iceberg para determinar o período de retenção de snapshots e o número de snapshots a serem retidos. Na ausência dessa configuração, o AWS Glue retém um snapshot por cinco dias e exclui os arquivos associados aos snapshots expirados.

1.  Em seguida, escolha um perfil do IAM que o AWS Glue possa assumir em seu nome para executar o otimizador. Para obter detalhes sobre as permissões necessárias para o perfil do IAM, consulte a seção [Pré-requisitos de otimização de tabelas](optimization-prerequisites.md).

   Siga as etapas abaixo para atualizar um perfil do IAM existente: 

   1.  Para atualizar a política de permissões para o perfil do IAM, no console do IAM, acesse a função do IAM que está sendo usada para executar a compactação. 

   1.  Na seção Adicionar permissões, escolha Criar política. Na janela recém-aberta do navegador, crie uma nova política para usar com sua função. 

   1. Na página Criar política, escolha a guia JSON. Copie o código JSON mostrado nos Pré-requisitos no campo do editor de políticas.

1. Se você preferir definir os valores da **Configuração de retenção de snapshots** manualmente, escolha **Personalizar configurações**.   
![\[Página de detalhes da tabela Apache Iceberg com a opção Habilitar retenção > Personalizar configurações.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/table-enable-retention.png)

1. Escolha a opção **Aplicar o perfil do IAM selecionado aos otimizadores selecionados** para usar um único perfil do IAM para habilitar todos os otimizadores.

1. Se você tiver configurações de política de segurança em que o otimizador de tabelas do Iceberg precise acessar buckets do Amazon S3 de uma Nuvem Privada Virtual (VPC) específica, crie uma conexão de rede do AWS Glue ou use uma existente.

   Se você ainda não tiver uma conexão VPC do AWS Glue configurada, crie uma seguindo as etapas na seção [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) usando o console do AWS Glue ou a AWS CLI/o SDK.

1. Em seguida, em **Configuração de retenção de snapshots**, escolha usar os valores especificados na [Configuração da tabela do Iceberg](https://iceberg.apache.org/docs/1.5.2/configuration/#table-behavior-properties) ou especifique valores personalizados para o período de retenção do snapshot (history.expire.max-snapshot-age-ms), o número mínimo de snapshots (history.expire.min-snapshots-to-keep) a serem mantidos e o tempo em horas entre as execuções consecutivas do trabalho de exclusão de snapshots.

1.  Escolha **Excluir arquivos associados** para excluir arquivos subjacentes quando o otimizador de tabela excluir snapshots antigos dos metadados da tabela.

    Se você não escolher essa opção, quando os snapshots mais antigos forem removidos dos metadados da tabela, seus arquivos associados permanecerão no armazenamento como arquivos órfãos. 

1. Em seguida, leia a declaração de atenção e escolha **Eu confirmo** para continuar.
**nota**  
 No Catálogo de Dados, o otimizador de retenção de snapshots respeita o ciclo de vida controlado pelas políticas de retenção no nível de ramificação e tag. Para obter mais informações, consulte a seção [Branching and tagging](https://iceberg.apache.org/docs/latest/branching/#overview) na documentação do Iceberg.

1. Revise a configuração e escolha **Habilitar otimização**.

   Aguarde alguns minutos até que o otimizador de retenção seja executado e expire os snapshots antigos com base na configuração.

------
#### [ AWS CLI ]

 Para habilitar a retenção de snapshots para novas tabelas Iceberg no AWS Glue, você precisa criar um otimizador de tabela do tipo `retention` e definir o campo `enabled` como `true` na `table-optimizer-configuration`. Você pode executar essa ação usando o comando `create-table-optimizer` ou `update-table-optimizer` da AWS CLI. Além disso, você precisa especificar os campos de configuração de retenção, como `snapshotRetentionPeriodInDays` e `numberOfSnapshotsToRetain`, com base em seus requisitos.

O exemplo a seguir mostra como habilitar o otimizador de retenção de snapshots. Substitua o ID da conta por um ID de conta da AWS válido. Substitua o nome do banco de dados e o nome da tabela pelo nome real da tabela do Iceberg e pelo nome do banco de dados. Substitua `roleArn` pelo nome do recurso da AWS (ARN) do perfil do IAM e o nome atual do perfil do IAM que tem as permissões necessárias para executar o otimizador de retenção de snapshots. 

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":'true', "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}'\
  --type retention
```

 Esse comando cria um otimizador de retenção para a tabela Iceberg especificada no catálogo, no banco de dados e na região especificados. A configuração do otimizador de tabela especifica o ARN do perfil do IAM a ser usado, habilita o otimizador e define a configuração de retenção. Neste exemplo, ele retém os snapshots por sete dias, mantém um mínimo três snapshots e limpa os arquivos expirados. 
+  snapshotRetentionPeriodInDays: o número de dias para reter os snapshots antes de expirá-los. O valor padrão é `5`. 
+ numberOfSnapshotsToRetain: o número mínimo de snapshots a serem mantidos, mesmo que sejam mais antigos que o período de retenção. O valor padrão é `1`. 
+ cleanExpiredFiles: um booleano que indica se os arquivos de dados expirados devem ser excluídos após a expiração dos snapshots. O valor padrão é `true`.

   Quando definido como true, os snapshots mais antigos são removidos dos metadados da tabela e seus arquivos subjacentes são excluídos. Se esse parâmetro for definido como false, os snapshots mais antigos serão removidos dos metadados da tabela, mas seus arquivos subjacentes permanecerão no armazenamento como arquivos órfãos. 

------
#### [ AWS API ]

Chame a operação [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para habilitar o otimizador de retenção de snapshots de uma tabela.

------

Depois de ativar a compactação, a guia **Otimização de tabela** mostra os seguintes detalhes da compactação (após aproximadamente 15 a 20 minutos):

Hora de início  
A hora em que o otimizador de retenção de snapshots foi iniciado. O valor é um timestamp no horário UTC. 

Run time (runtime)  
A hora mostra quanto tempo o otimizador leva para concluir a tarefa. O valor é um timestamp no horário UTC. 

Status  
O status da execução do otimizador. Os valores são sucesso ou falha.

Arquivos de dados excluídos  
Número total de arquivos excluídos.

Arquivos de manifesto excluídos  
Número total de arquivos de manifesto excluídos.

Listas de manifestos excluídas  
Número total de listas de manifestos excluídas.

# Atualizar o otimizador de retenção de snapshots
<a name="update-snapshot-retention"></a>

 Você pode atualizar a configuração atual de um otimizador de retenção de snapshots para uma tabela Apache Iceberg específica usando o console do AWS Glue, a AWS CLI ou a API UpdateTableOptimizer. 

------
#### [ Console ]

**Para atualizar a configuração de retenção de snapshots**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Escolha **catálogo de dados** e escolha **Tabelas**. Na lista de tabelas, escolha a tabela do Iceberg para a qual deseja atualizar a configuração do otimizador de retenção de snapshots.

1. Na seção inferior da página de **Detalhes das tabelas**, selecione a guia **Otimização da tabela** e **Editar**. Você também pode escolher **Editar** em **Otimização** no menu **Ações** localizado no canto superior direito da página.

1.  Na página **Editar otimização**, faça as alterações necessárias. 

1.  Escolha **Salvar**. 

------
#### [ AWS CLI ]

 Para atualizar um otimizador de retenção de snapshots usando aAWS CLI, você pode usar o seguinte comando: 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role"","enabled":'true', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}' \
 --type retention
```

 Esse comando atualiza a configuração de retenção para a tabela especificada em determinado catálogo, banco de dados e região. Os principais parâmetros são: 
+  snapshotRetentionPeriodInDays: o número de dias para reter os snapshots antes de expirá-los. O valor padrão é `1`. 
+ numberOfSnapshotsToRetain: o número mínimo de snapshots a serem mantidos, mesmo que sejam mais antigos que o período de retenção. O valor padrão é `5`. 
+ cleanExpiredFiles: um booleano que indica se os arquivos de dados expirados devem ser excluídos após a expiração dos snapshots. O valor padrão é `true`. 

   Quando definido como true, os snapshots mais antigos são removidos dos metadados da tabela e seus arquivos subjacentes são excluídos. Se esse parâmetro for definido como false, os snapshots mais antigos serão removidos dos metadados da tabela, mas seus arquivos subjacentes permanecerão no armazenamento como arquivos órfãos. 

------
#### [ API ]

Para atualizar um otimizador de tabela, você pode usar a API `UpdateTableOptimizer`. Essa API permite que você atualize a configuração de um otimizador de tabela existente para compactação, retenção ou remoção de arquivos órfãos. Os parâmetros de solicitação incluem:
+ catalogId (obrigatório): o ID do catálogo que contém a tabela 
+  databaseName (opcional): o nome do banco de dados que contém a tabela 
+  tableName (opcional): o nome da tabela 
+  type (obrigatório): o tipo de otimizador de tabela (compactação, retenção ou orphan\$1file\$1deletion) 
+  retentionConfiguration (obrigatório): a configuração atualizada do otimizador de tabela, incluindo o ARN do perfil, o status habilitado, a configuração de retenção e a configuração de remoção de arquivos órfãos. 

------

# Desabilitar o otimizador de retenção de snapshots
<a name="disable-snapshot-retention"></a>

 Você pode desabilitar o otimizador de retenção de snapshots para uma tabela Apache Iceberg específica usando o console do AWS Glue ou a AWS CLI. 

------
#### [ Console ]

**Para desabilitar a retenção de snapshots**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Escolha **catálogo de dados** e escolha **Tabelas**. Na lista de tabelas, escolha a tabela Iceberg da qual você deseja desabilitar o otimizador para a retenção de snapshots.

1. Na seção inferior da página **Detalhes da tabela**, escolha **Otimização de tabela** e **Desabilitar**, **Retenção de snapshots**, em **Ações**.

   Também é possíveç escolher **Desativar** em **Otimização** no menu **Ações**, localizado no canto superior direito da página.

1.  Escolha **Desabilitar** na mensagem de confirmação. Você poderá habilitar novamente o otimizador de retenção de snapshots mais tarde. 

    Após a confirmação, o otimizador de retenção de snapshots é desabilitado e o status de retenção de snapshots volta a ser `Not enabled`.

------
#### [ AWS CLI ]

No exemplo a seguir, substitua o ID da conta por um ID de conta da AWS válido. Substitua o nome do banco de dados e o nome da tabela pelo nome real da tabela do Iceberg e pelo nome do banco de dados. Substitua `roleArn` pelo nome do recurso da AWS (ARN) do perfil do IAM e o nome atual do perfil do IAM que tem as permissões necessárias para executar o otimizador de retenção.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}, "enabled":'false'}'\ 
  --type retention
```

------
#### [ AWS API ]

Chame a operação [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para desabilitar o otimizador de retenção de snapshots para uma tabela específica.

------

# Excluir arquivos órfãos
<a name="orphan-file-deletion"></a>

 O AWS Glue Data Catalog permite que você remova arquivos órfãos de suas tabelas Iceberg. Arquivos órfãos são arquivos não referenciados que existem na sua fonte de dados do Amazon S3 na localização da tabela especificada, não são rastreados pelos metadados da tabela Iceberg e são mais antigos do que o limite de idade configurado. Esses arquivos órfãos podem se acumular com o tempo devido a falhas de operações como compactação, descarte de partições ou regravações de tabelas, além de ocupar espaço de armazenamento desnecessário.

O otimizador de exclusão de arquivos órfãos no AWS Glue verifica os metadados da tabela e os arquivos de dados reais, identifica os arquivos órfãos e os exclui para recuperar espaço de armazenamento. O otimizador remove apenas os arquivos criados após a data de criação do otimizador que também atendam aos critérios de exclusão configurados. Os arquivos criados antes ou na data de criação do otimizador nunca são excluídos.

**Lógica de exclusão de arquivos órfãos**

1. Verificação de data: compara a data de criação do arquivo com a data de criação do otimizador. Se o arquivo for anterior ou igual à data de criação do otimizador, ele será ignorado.

1. Verificação da configuração do otimizador: se o arquivo for mais recente que a data de criação do otimizador, ele será avaliado em relação ao limite de idade configurado. O otimizador exclui o arquivo se ele corresponder aos critérios de exclusão. Ignora o arquivo, se ele não corresponder aos critérios.

 Você pode iniciar a exclusão de arquivos órfãos criando um otimizador de tabela de exclusão de arquivos órfãos no Catálogo de Dados.

**Importante**  
 Por padrão, a exclusão de arquivos órfãos avalia os arquivos em toda a localização da sua tabela do AWS Glue. Embora você possa configurar um subprefixo para limitar o escopo da avaliação usando o parâmetro API, é necessário garantir que o local da tabela não contenha arquivos de outras fontes de dados ou tabelas. Se a localização da sua tabela se sobrepuser a outras fontes de dados, o serviço poderá identificar e excluir arquivos não relacionados como órfãos. 

**Topics**
+ [Habilitar a exclusão de arquivos órfãos](enable-orphan-file-deletion.md)
+ [Atualizar o otimizador de exclusão de arquivos órfãos](update-orphan-file-deletion.md)
+ [Desabilitar a exclusão de arquivos órfãos](disable-orphan-file-deletion.md)

# Habilitar a exclusão de arquivos órfãos
<a name="enable-orphan-file-deletion"></a>

 Você pode usar o console do AWS Glue, a AWS CLI ou a API da AWS para habilitar a exclusão de arquivos órfãos das suas tabelas Apache Iceberg que estão no Catálogo de Dados. Para novas tabelas, você pode escolher Apache Iceberg como o formato de tabela e habilitar o otimizador de exclusão de arquivos órfãos ao criar a tabela. A retenção de snapshots está desabilitada por padrão para novas tabelas.

------
#### [ Console ]

**Para habilitar a exclusão de arquivos órfãos**

1.  Abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e faça login como administrador do data lake, criador da tabela ou um usuário que tenha recebido as permissões `glue:UpdateTable` e `lakeformation:GetDataAccess` na tabela. 

1. No painel de navegação, em **Catálogo de dados**, escolha **Tabelas**.

1. Na página **Tabelas**, escolha uma tabela Iceberg na qual você deseja habilitar a exclusão de arquivos órfãos.

   Escolha a guia **Otimização de tabela** na seção inferior da página e depois **Habilitar**, **Exclusão de arquivos órfãos**, em **Ações**. 

   Você também pode escolher **Habilitar** em **Otimização** no menu **Ações** localizado no canto superior direito da página.

1. Na página **Habilitar otimização**, escolha **Exclusão de arquivos órfãos** em **Opções de otimização**.

1. Se você optar por usar as **Configurações padrão**, todos os arquivos órfãos serão excluídos após 3 dias. Se quiser manter os arquivos órfãos por um número específico de dias, escolha **Personalizar configurações**.

1. Depois, escolha uma perfil do IAM com as permissões necessárias para excluir arquivos órfãos.

1. Se você tiver configurações de política de segurança em que o otimizador de tabelas do Iceberg precise acessar buckets do Amazon S3 de uma Nuvem Privada Virtual (VPC) específica, crie uma conexão de rede do AWS Glue ou use uma existente.

   Se você ainda não tiver uma conexão VPC do AWS Glue configurada, crie uma seguindo as etapas na seção [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) usando o console do AWS Glue ou a AWS CLI/o SDK.

1. Em **Personalizar configurações**, insira o número de dias para reter os arquivos antes da exclusão em **Configuração de exclusão de arquivos órfãos**. Também é possível especificar o intervalo entre duas execuções consecutivas do otimizador. O valor padrão é 24 horas.

1. Escolha **Habilitar otimização**.

------
#### [ AWS CLI ]

 Para habilitar a exclusão de arquivos órfãos para uma tabela Iceberg no AWS Glue, você precisa criar um otimizador de tabela do tipo `orphan_file_deletion` e definir o campo `enabled` como true. Para criar um otimizador de exclusão de arquivos órfãos para uma tabela Iceberg usando a AWS CLI, você pode usar o seguinte comando:

```
aws glue create-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":3, "location":'S3 location'}}}'\
 --type orphan_file_deletion
```

 Esse comando cria um otimizador de exclusão de arquivos órfãos para a tabela Iceberg especificada. Os principais parâmetros são:
+ roleArn: o ARN do perfil do IAM com permissões para acessar o bucket do S3 e os recursos do Glue.
+ enabled: defina como true para habilitar o otimizador.
+ orphanFileRetentionPeriodInDays: o número de dias para reter arquivos órfãos antes de excluí-los (o mínimo é um dia).
+ type: defina como orphan\$1file\$1deletion para criar um otimizador de exclusão de arquivos órfãos.

 Depois de criar o otimizador de tabela, ele executará a exclusão de arquivos órfãos periodicamente (uma vez por dia, se estiver habilitado). Você pode verificar as execuções usando a API `list-table-optimizer-runs`. O trabalho de exclusão de arquivos órfãos identificará e excluirá arquivos que não são rastreados nos metadados Iceberg da tabela.

------
#### [ API ]

Chame a operação [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para criar o otimizador de exclusão de arquivos órfãos de uma tabela específica.

------

# Atualizar o otimizador de exclusão de arquivos órfãos
<a name="update-orphan-file-deletion"></a>

 Você pode modificar a configuração do otimizador de exclusão de arquivos órfãos, como alterar o período de retenção de arquivos órfãos ou o perfil do IAM usado pelo otimizador usando o console do AWS Glue, a AWS CLI ou a operação `UpdateTableOptimizer`. 

------
#### [ Console de gerenciamento da AWS ]

**Para atualizar o otimizador de exclusão de arquivos órfãos**

1.  Escolha **catálogo de dados** e escolha **Tabelas**. Na lista de tabelas, escolha a tabela da qual você deseja atualizar a configuração do otimizador de exclusão de arquivos órfãos.

1. Na seção inferior da página de **Detalhes das tabelas**, escolha **Otimização de tabela** e, em seguida, **Editar**. 

1.  Na página **Editar otimização**, faça as alterações necessárias. 

1.  Escolha **Salvar**. 

------
#### [ AWS CLI ]

 Você pode usar a chamada `update-table-optimizer` para atualizar o otimizador de exclusão de arquivos órfãos no AWS Glue, você pode usar a chamada. Isso permite que você modifique a `OrphanFileDeletionConfiguration` no campo `icebergConfiguration` em que você pode especificar a atualização de `OrphanFileRetentionPeriodInDays` para definir o número de dias para reter arquivos órfãos, para especificar a localização da tabela Iceberg da qual excluir arquivos órfãos. 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name Iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":5}}}' \
 --type orphan_file_deletion
```

------
#### [ API ]

Chame a operação [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para atualizar o otimizador de exclusão de arquivos órfãos de uma tabela.

------

 

# Desabilitar a exclusão de arquivos órfãos
<a name="disable-orphan-file-deletion"></a>

 Você pode desabilitar o otimizador de exclusão de arquivos órfãos para uma tabela Apache Iceberg específica usando o console do AWS Glue ou a AWS CLI. 

------
#### [ Console ]

**Para desabilitar a exclusão de arquivos órfãos**

1. Escolha **catálogo de dados** e escolha **Tabelas**. Na lista de tabelas, escolha a tabela Iceberg da qual você deseja desabilitar o otimizador para a exclusão de arquivos órfãos.

1. Na seção inferior da página **Detalhes da tabela**, escolha a guia **Otimização de tabela**.

1. Escolha **Ações** e, em seguida, escolha **Desativar**, **Exclusão de arquivo órfão**.

   Você também pode escolher **Desabilitar** em **Otimização** no menu **Ações**.

1.  Escolha **Desabilitar** na mensagem de confirmação. Você poderá habilitar novamente o otimizador de exclusão de arquivos órfãos mais tarde. 

    Após a confirmação, o otimizador de exclusão de arquivos órfãos é desabilitado e o status da exclusão de arquivos órfãos volta a ser `Not enabled`.

------
#### [ AWS CLI ]

No exemplo a seguir, substitua o ID da conta por um ID de conta da AWS válido. Substitua o nome do banco de dados e o nome da tabela pelo nome real da tabela do Iceberg e pelo nome do banco de dados. Substitua `roleArn` pelo nome do recurso da AWS (ARN) do perfil do IAM e o nome atual do perfil do IAM que tem as permissões necessárias para desabilitar o otimizador.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false'}'\ 
  --type orphan_file_deletion
```

------
#### [ API ]

Chame a operação [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para desabilitar o otimizador de retenção de snapshots para uma tabela específica.

------

# Visualizar detalhes da otimização
<a name="view-optimization-status"></a>

Você pode visualizar o status de otimização das tabelas Apache Iceberg no console do AWS Glue, na AWS CLI ou usando as operações de API da AWS. 

------
#### [ Console ]

**Para visualizar o status de otimização das tabelas Iceberg (console)**
+ Você pode visualizar o status de otimização das tabelas Iceberg no console do AWS Glue escolhendo uma tabela Iceberg na lista **Tabelas** em **Catálogo de Dados**. Em **Otimização da tabela**. Escolha a opção **Exibir tudo**  
![\[Página de detalhes da tabela do Apache Iceberg com a opção Ativar compactação.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/table-list-compaction-status.png)

------
#### [  AWS CLI  ]

Você pode visualizar os detalhes da otimização usando a AWS CLI.

Nos exemplos a seguir, substitua o ID da conta por um ID de conta da AWS válido, o nome do banco de dados e o nome da tabela pelo nome real da tabela Iceberg. Para `type`, forneça um tipo de otimização. Os valores aceitáveis são `compaction`, `retention` e `orphan-file-deletion`.
+ **Para obter os detalhes da última execução de compactação para uma tabela**

  ```
  aws get-table-optimizer \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ Use o exemplo a seguir para recuperar o histórico de um otimizador para uma tabela específica.

  ```
  aws list-table-optimizer-runs \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ O exemplo a seguir mostra como recuperar a execução de otimização e os detalhes de configuração de vários otimizadores. Você pode especificar no máximo 20 otimizadores.

  ```
  aws glue batch-get-table-optimizer \
  --entries '[{"catalogId":"123456789012", "databaseName":"iceberg_db", "tableName":"iceberg_table", "type":"compaction"}]'
  ```

------
#### [ API ]
+ Use a operação `GetTableOptimizer` para recuperar os detalhes da última execução de um otimizador. 
+  Use a operação `ListTableOptimizerRuns` para recuperar o histórico de um determinado otimizador em uma tabela específica. Você pode especificar 20 otimizadores em uma única chamada de API. 
+ Use a operação [BatchGetTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-BatchGetTableOptimizer) para recuperar detalhes de configuração de vários otimizadores na conta. 

------

# Visualizar métricas do Amazon CloudWatch
<a name="view-optimization-metrics"></a>

 Depois de executar os otimizadores de tabela com êxito, o serviço cria métricas do Amazon CloudWatch sobre a performance do trabalho de otimização. Você pode acessar as **Métricas do CloudWatch** e escolher **Métricas**, **Todas as métricas**. Você pode filtrar métricas pelo namespace específico (por exemplo, do AWS Glue), nome da tabela ou nome do banco de dados.

 Para obter mais informações, consulte [Visualizar métricas disponíveis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) no *Guia do usuário do Amazon CloudWatch*. 

****Compactação****
+ Número de bytes compactados 
+ Número de arquivos compactados
+ Número de DPU alocado para o trabalho 
+ Duração do trabalho (horas) 

****Retenção de snapshots****
+ Número de arquivos de dados excluídos 
+ Número de arquivos de manifesto excluídos
+ Número de listas de manifestos excluídas 
+ Duração do trabalho (horas)

****Exclusão de arquivos órfãos****
+ Número de arquivos órfãos excluídos 
+ Duração do trabalho (horas) 

# Excluindo um otimizador
<a name="delete-optimizer"></a>

Você pode excluir um otimizador e os metadados associados à tabela usando a AWS CLI ou a operação de API da AWS.

Execute o comando AWS CLI a seguir para excluir o histórico de otimização de uma tabela. Você precisa especificar o otimizador `type` junto com o ID do catálogo, o nome do banco de dados e o nome da tabela. Os valores aceitáveis são: `compaction`, `retention` e `orphan_file_deletion`.

```
aws glue delete-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --type compaction
```

 Use a operação `DeleteTableOptimizer` para excluir um otimizador para uma tabela.

# Considerações e limitações
<a name="optimizer-notes"></a>

 Esta seção inclui considerações a serem feitas quando forem usados otimizadores de tabela no AWS Glue Data Catalog. 

## Durabilidade e correção
<a name="durability-correctness"></a>

**Locais da tabela do S3:**

Quando várias tabelas do AWS Glue Data Catalog compartilham o mesmo local do Amazon S3 e têm otimizadores habilitados, o otimizador de retenção de snapshots ou exclusão de arquivos órfãos de uma tabela pode excluir arquivos que ainda sejam referenciados pela outra tabela. É preciso que cada tabela com otimizadores habilitados tenha um local exclusivo do Amazon S3 que não seja compartilhado com nenhuma outra tabela, inclusive tabelas em bancos de dados diferentes.

**Expiração do ciclo de vida do S3:**

As regras de expiração do ciclo de vida do Amazon S3 que se aplicam aos locais de armazenamento de tabelas do Iceberg podem excluir arquivos de manifesto e de dados que ainda sejam referenciados por snapshots ativos. Se seu bucket tiver regras de expiração do ciclo de vida, é necessário que elas excluam o caminho de armazenamento da tabela do Iceberg.

## Formatos e limitações compatíveis para compactação gerenciada de dados
<a name="compaction-notes"></a>

A compactação de dados aceita uma variedade de tipos de dados e formatos de compactação para leitura e gravação de dados, incluindo a leitura de dados de tabelas criptografadas.

**Controle de simultaneidade:**

 O Apache Iceberg é compatível com um controle otimista de simultaneidade, permitindo que vários gravadores realizem operações simultaneamente. Os conflitos são detectados e resolvidos no momento da confirmação. Ao trabalhar com pipelines de streaming, defina as configurações de repetição apropriadas por meio das propriedades da tabela e das configurações de compactação para lidar com gravações simultâneas de forma eficaz. Para obter orientação detalhada, consulte o Blog de Big Data da AWS sobre como [gerenciar gravações simultâneas nas tabelas do Iceberg](https://aws.amazon.com/blogs/big-data/manage-concurrent-write-conflicts-in-apache-iceberg-on-the-aws-glue-data-catalog/). 

**Novas tentativas de compactação:**

 Quando as operações de compactação falham quatro vezes consecutivas, a otimização da tabela de catálogos do AWS Glue suspende automaticamente o otimizador para evitar o consumo desnecessário de recursos computacionais. Primeiro, investigue os logs e tente entender por que a compactação está falhando repetidamente. Para retomar a otimização da compactação, você pode reativar o otimizador por meio do console AWS Glue ou da API. 

 **A compactação de dados suporta:**
+ **Criptografia**: a compactação de dados oferece suporte somente à criptografia padrão do Amazon S3 (SSE-S3) e a criptografia do KMS no lado do servidor (SSE-KMS).
+ **Estratégias de compactação**: binpack, classificação e classificação em ordem Z.
+ Você pode executar a compactação a partir da conta em que o catálogo de dados reside quando o bucket do Amazon S3 que armazena os dados subjacentes estiver em outra conta. Para fazer isso, a função de compactação exige acesso ao bucket do Amazon S3.

 **Atualmente, a compactação de dados não oferece suporte a:** 
+ **Compactação em tabelas de contas cruzadas**: não é possível executar a compactação em tabelas de contas cruzadas.
+ **Compactação de tabelas entre regiões**: não é possível executar a compactação de tabelas entre regiões.
+ **Habilitando a compactação em links de recursos**
+ **Tabelas na classe de armazenamento Amazon S3 Express One Zone**: você não pode executar compactação nas tabelas do Iceberg do Amazon S3 Express One Zone. 
+ **A estratégia de compactação em ordem Z não é compatível com os seguintes tipos de dados :**
  + Decimal
  + TimestampWithoutZone

## Considerações sobre otimizadores de retenção de snapshots e exclusão de arquivos órfãos
<a name="retention-notes"></a>

A consideração a seguir se aplica ao otimizador de retenção de snapshots e exclusão de arquivos órfãos. 
+ Os processos de retenção de snapshots e exclusão de arquivos órfãos têm um limite máximo de exclusão de 1 milhão de arquivos por execução. Ao excluir snapshots expirados, se o número de arquivos elegíveis para exclusão ultrapassar 1 milhão, todos os arquivos restantes além desse limite continuarão existindo no armazenamento da tabela como arquivos órfãos. 
+ Os snapshots serão preservados pelo otimizador de retenção de snapshots somente quando ambos os critérios forem satisfeitos: o número mínimo de snapshots a serem mantidos e o período de retenção especificado.
+ O otimizador de retenção de snapshots exclui metadados de snapshots expirados do Apache Iceberg, evitando consultas de viagem no tempo para snapshots expirados e, opcionalmente, excluindo arquivos de dados associados.
+  O otimizador de exclusão de arquivos órfãos exclui dados órfãos e arquivos de metadados que não são mais referenciados pelos metadados do Iceberg se a hora de criação for anterior ao período de retenção da exclusão de arquivos órfãos a partir do momento da execução do otimizador.
+ O Apache Iceberg facilita o controle de versão por meio de ramificações e tags, que são denominadas ponteiros para estados específicos de snapshots. Cada ramificação e tag segue seu próprio ciclo de vida independente, regido por políticas de retenção definidas em seus respectivos níveis. Os otimizadores do AWS Glue Data Catalog levam em consideração essas políticas de ciclo de vida, garantindo a adesão às regras de retenção especificadas. As políticas de retenção em nível de ramificação e tag têm precedência sobre as configurações do otimizador. 

   Para obter mais informações, consulte a seção [Ramificações e marcações](https://iceberg.apache.org/docs/nightly/branching/) na documentação do Iceberg. 
+ Os otimizadores de retenção de snapshots e exclusão de arquivos órfãos excluirão os arquivos elegíveis para limpeza de acordo com os parâmetros configurados. Melhore seu controle sobre a exclusão de arquivos implementando políticas de controle de versão e ciclo de vida do S3 nos buckets apropriados.

   Para obter instruções detalhadas sobre como configurar o controle de versão e criar regras de ciclo de vida, consulte [https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html). 
+  Para a determinação correta dos arquivos órfãos, certifique-se de que o local da tabela fornecido e quaisquer caminhos secundários não se sobreponham ou contenham dados de outras tabelas ou fontes de dados. Caso haja sobreposição de caminhos, você corre o risco de perda de dados irrecuperáveis devido à exclusão não intencional de arquivos. 

## Depurar a exceção do OversizedAllocationException
<a name="debug-exception"></a>

Para resolver uma exceção `OversizedAllocationException`:
+ Reduza o tamanho do lote do leitor vetorizado e verifique. O tamanho padrão do lote é 5.000. Isso é controlado no `read.parquet.vectorization.batch-size`.
  + Se isso não funcionar mesmo após diversas variações, desative a vetorização. Isso é controlado no `read.parquet.vectorization.enabled`.

# Regiões compatíveis para otimizadores de tabela
<a name="regions-optimizers"></a>

Os recursos de otimização de tabelas (compactação, retenção de instantâneos e exclusão de arquivos órfãos) do AWS Glue Data Catalog estão disponíveis nas seguintes Regiões da AWS:
+ Ásia-Pacífico (Tóquio)
+ Ásia-Pacífico (Seul)
+ Ásia-Pacífico (Mumbai)
+ Ásia-Pacífico (Singapura)
+ Ásia-Pacífico (Sydney)
+ Ásia-Pacífico (Jacarta)
+ Canadá (Central)
+ Europa (Irlanda)
+ Europa (Londres)
+ Europa (Frankfurt)
+ Europa (Estocolmo)
+ Leste dos EUA (Norte da Virgínia)
+ Leste dos EUA (Ohio)
+ Oeste dos EUA (Oregon)
+ América do Sul (São Paulo)

# Otimizar a performance da consulta para tabelas Iceberg
<a name="iceberg-column-statistics"></a>

Apache Iceberg é um formato de tabela aberta de alta performance para grandes conjuntos de dados analíticos. O AWS Glue é compatível com o cálculo e a atualização do número de valores distintos (NDVs) para cada coluna nas tabelas Iceberg. Essas estatísticas podem facilitar uma melhor otimização de consultas, gerenciamento de dados e eficiência de performance para cientistas e engenheiros de dados que trabalham com conjuntos de dados em grande escala.

 O AWS Glue estima o número de valores distintos em cada coluna da tabela Iceberg e os armazena em arquivos [Puffin](https://iceberg.apache.org/puffin-spec/) no Amazon S3 associados aos snapshots da tabela Iceberg. Puffin é um formato de arquivo Iceberg projetado para armazenar metadados como índices, estatísticas e esboços. Armazenar esboços em arquivos Puffin vinculados a snapshots garante a consistência transacional e a atualização das estatísticas do NDV.

Você pode configurar para executar a tarefa de geração de estatísticas de coluna usando o console do AWS Glue ou a AWS CLI. Quando você inicia o processo, o AWS Glue inicia um trabalho do Spark em segundo plano e atualiza os metadados da tabela AWS Glue no Catálogo de Dados. Você pode visualizar as estatísticas da coluna usando o console do AWS Glue ou a AWS CLI ou chamando a operação da API [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html).

**nota**  
Se você estiver usando as permissões do AWS Lake Formation para controlar o acesso à tabela, o perfil assumido pela tarefa de estatísticas da coluna exigirá acesso total à tabela para gerar estatísticas.

**Topics**
+ [Pré-requisitos para gerar estatísticas de colunas](iceberg-column-stats-prereqs.md)
+ [Gerar estatísticas de colunas para tabelas Iceberg](iceberg-generate-column-stats.md)
+ [Consulte também](#see-also-iceberg-stats)

# Pré-requisitos para gerar estatísticas de colunas
<a name="iceberg-column-stats-prereqs"></a>

Para gerar ou atualizar as estatísticas de colunas para tabelas Iceberg, a tarefa de geração de estatísticas assume um perfil do AWS Identity and Access Management (IAM) em seu nome. Com base nas permissões concedidas ao perfil, a tarefa de geração de estatísticas de colunas pode ler os dados do datastore do Amazon S3.

Ao configurar a tarefa de geração de estatísticas de colunas, o AWS Glue permite que você crie um perfil que inclua a política `AWSGlueServiceRole` gerenciada pela AWS, além da política em linha necessária para a fonte de dados especificada. 

Se você especificar um perfil existente para a geração de estatísticas de colunas, certifique-se de que ele inclua a política `AWSGlueServiceRole` ou equivalente (ou uma versão dessa política com um escopo reduzido), além das políticas em linha necessárias.

Para obter mais informações sobre as permissões do necessárias, consulte [Pré-requisitos para gerar estatísticas de colunas](column-stats-prereqs.md). 

# Gerar estatísticas de colunas para tabelas Iceberg
<a name="iceberg-generate-column-stats"></a>

Siga estas etapas para configurar um cronograma para gerar estatísticas no Catálogo de Dados usando o console do AWS Glue ou a AWS CLI, ou execute a operação **StartColumnStatisticsTaskRun**.

**Para gerar estatísticas de colunas**

1. Faça login no console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Escolha **Tabelas** em Catálogo de Dados.

1. Escolha uma tabela Iceberg na lista. 

1. Escolha **Estatísticas de colunas**, **Gerar sob demanda** no menu **Ações**.

   Você também pode escolher o botão **Gerar estatísticas** na guia **Estatísticas de colunas** na seção inferior da página **Tabelas**.

1. Na página **Gerar estatísticas**, forneça os detalhes da geração de estatísticas. Siga as etapas de 6 a 11 na seção [Gerar estatísticas de colunas em uma programação](generate-column-stats.md) para configurar a geração de estatísticas para tabelas do Iceberg. 

   Você também pode optar por gerar estatísticas de colunas sob demanda seguindo as instruções na [Gerar estatísticas de colunas sob demanda](column-stats-on-demand.md).
**nota**  
A opção de amostragem não está disponível para tabelas Iceberg.

   O AWS Glue calcula o número de valores distintos de cada coluna da tabela Iceberg para um novo arquivo Puffin comprometido com o ID de snapshot especificado em sua localização no Amazon S3.

## Consulte também
<a name="see-also-iceberg-stats"></a>
+ [Visualizar estatísticas de colunas](view-column-stats.md)
+ [Visualizar as execuções de tarefas de estatísticas de colunas](view-stats-run.md)
+ [Interromper a execução da tarefa de estatísticas de coluna](stop-stats-run.md)
+ [Excluir estatísticas de colunas](delete-column-stats.md)