

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 Iceberg em AWS Glue
<a name="iceberg-glue"></a>

[AWS Glue](https://aws.amazon.com/glue/)é um serviço de integração de dados sem servidor que facilita a descoberta, a preparação, a movimentação e a integração de dados de várias fontes para análise, aprendizado de máquina (ML) e desenvolvimento de aplicativos. Um dos principais recursos do AWS Glue é a capacidade de realizar operações de extração, transformação e carregamento (ETL) de maneira simples e econômica. Isso ajuda a categorizar seus dados, limpá-los, enriquecê-los e movê-los de forma confiável entre vários armazenamentos de dados e fluxos de dados. 

[AWS Glue trabalhos](https://docs.aws.amazon.com/glue/latest/dg/etl-jobs-section.html) encapsulam scripts que definem a lógica de transformação usando um tempo de execução [Apache Spark ou Python](https://spark.apache.org/). AWS Glue os trabalhos podem ser executados tanto no modo batch quanto no modo de streaming. 

Ao criar trabalhos do Iceberg em AWS Glue, dependendo da versão do AWS Glue, você pode usar a integração nativa do Iceberg ou uma versão personalizada do Iceberg para anexar dependências do Iceberg ao trabalho.

## Usando a integração nativa do Iceberg
<a name="glue-native-integration"></a>

AWS Glue as versões 3.0, 4.0 e 5.0 oferecem suporte nativo a formatos de data lake transacionais, como Apache Iceberg, Apache Hudi e Linux Foundation Delta Lake in for Spark. AWS Glue Esse recurso de integração simplifica as etapas de configuração necessárias para começar a usar essas estruturas no. AWS Glue

Para ativar o suporte do Iceberg para seu AWS Glue trabalho, defina o trabalho: escolha a guia **Detalhes** do trabalho para seu AWS Glue trabalho, vá até **Parâmetros do trabalho** em **Propriedades avançadas** e defina a chave `--datalake-formats` e seu valor como`iceberg`.

Se você estiver criando um trabalho usando um notebook, você pode configurar o parâmetro na primeira célula do notebook usando a `%%configure` mágica da seguinte forma:

```
%%configure
{
  "--conf" : <job-specific Spark configuration discussed later>,
  "--datalake-formats" : "iceberg"
}
```

A `iceberg` configuração para `--datalake-formats` in AWS Glue corresponde a versões específicas do Iceberg com base na sua AWS Glue versão:


| AWS Glue versão | Versão padrão do Iceberg | 
| --- | --- | 
| 5,0 | 1.7.1 | 
| 4,0 | 1.0.0 | 
| 3.0 | 0.13.1 | 

## Usando uma versão personalizada do Iceberg
<a name="glue-custom-integration"></a>

Em algumas situações, talvez você queira manter o controle sobre a versão do Iceberg para o trabalho e atualizá-la no seu próprio ritmo. Por exemplo, a atualização para uma versão posterior pode desbloquear o acesso a novos recursos e aprimoramentos de desempenho. Para usar uma versão específica do Iceberg AWS Glue, você pode fornecer seus próprios arquivos JAR.

Antes de implementar uma versão personalizada do Iceberg, verifique a compatibilidade com seu AWS Glue ambiente consultando a seção de [AWS Glue versões](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html) da AWS Glue documentação. Por exemplo, o AWS Glue 5.0 requer compatibilidade com o Spark 3.5.4.

Como exemplo, para executar AWS Glue trabalhos que usam a versão 1.9.1 do Iceberg, siga estas etapas:

1. Adquira e faça o upload dos arquivos JAR necessários para o Amazon S3:

   1. [Baixe [iceberg-spark-runtime-3.5\_2.12-1.9.1.jar e -1.9.1.jar](https://mvnrepository.com/artifact/org.apache.iceberg/iceberg-spark-runtime-3.5_2.12/1.9.1) do repositório Apache Maven. iceberg-aws-bundle](https://mvnrepository.com/artifact/org.apache.iceberg/iceberg-aws-bundle/1.9.1)

   1. Faça o upload desses arquivos para o local designado do bucket do S3 (por exemplo,`s3://your-bucket-name/jars/`).

1. Configure os parâmetros do trabalho para seu AWS Glue trabalho da seguinte forma:

   1. Especifique o caminho completo do S3 para os dois arquivos JAR no `--extra-jars` parâmetro, separando-os com uma vírgula (por exemplo,). `s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar`

   1. Não inclua `iceberg` como um valor para o parâmetro `--datalake-formats`.

   1. Se você usar AWS Glue 5.0, deverá definir o `--user-jars-first` parâmetro como`true`.

## Configurações do Spark para Iceberg em AWS Glue
<a name="glue-spark-config"></a>

Esta seção discute as configurações do Spark necessárias para criar uma tarefa de AWS Glue ETL para um conjunto de dados do Iceberg. Você pode definir essas configurações usando a chave `--conf` Spark com uma lista separada por vírgulas de todas as chaves e valores de configuração do Spark. Você pode usar a `%%configure` mágica em um notebook ou na seção **Job parameters** do AWS Glue Studio console.

```
%glue_version 5.0

%%configure
{
  "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...",
  "--datalake-formats" : "iceberg"
}
```

Configure a sessão do Spark com as seguintes propriedades:
+ `<catalog_name>`é o nome do seu catálogo de sessões do Iceberg Spark. Substitua-o por um nome de sua escolha e lembre-se de alterar as referências em todas as configurações associadas a esse catálogo. No seu código, você pode se referir às suas tabelas do Iceberg usando o nome da tabela totalmente qualificado, incluindo o nome do catálogo da sessão do Spark, da seguinte forma:

  `<catalog_name>.<database_name>.<table_name>`

  Como alternativa, você pode alterar o catálogo padrão para o catálogo Iceberg que você definiu configurando `spark.sql.defaultCatalog` o nome do seu catálogo. Você pode usar essa segunda abordagem para se referir a tabelas sem o prefixo do catálogo, o que pode simplificar suas consultas.
+ `<catalog_name>.<warehouse>`aponta para o caminho do Amazon S3 onde você deseja armazenar seus dados e metadados.
+ Para tornar o catálogo um AWS Glue Data Catalog, `spark.sql.catalog.<catalog_name>.type` defina como`glue`. Essa chave é necessária para apontar para uma classe de implementação para qualquer implementação de catálogo personalizado. Para catálogos compatíveis com o Iceberg, consulte a seção de [melhores práticas gerais](best-practices.md) mais adiante neste guia.

Por exemplo, se você tiver um catálogo chamado`glue_iceberg`, poderá configurar seu trabalho usando várias `--conf` chaves da seguinte forma:

```
%%configure
{
  "--datalake-formats" : "iceberg",
  "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue"
}
```

Como alternativa, você pode usar o código para adicionar as configurações acima ao seu script do Spark da seguinte forma:

```
spark = SparkSession.builder\
                    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\
                    .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\
                    .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\
                    .config("spark.sql.catalog.glue_iceberg.type", "glue") \
                    .getOrCreate()
```

## Melhores práticas para AWS Glue empregos
<a name="glue-best-practices"></a>

Esta seção fornece diretrizes gerais para ajustar as tarefas do Spark para otimizar AWS Glue a leitura e gravação de dados nas tabelas do Iceberg. Para conhecer as melhores práticas específicas do Iceberg, consulte a seção [Melhores práticas](best-practices.md) mais adiante neste guia.
+ **Use a versão mais recente AWS Glue e atualize sempre que possível** — novas versões AWS Glue oferecem melhorias de desempenho, tempos de inicialização reduzidos e novos recursos. Eles também oferecem suporte às versões mais recentes do Spark, que podem ser necessárias para as versões mais recentes do Iceberg. Para ver uma lista das AWS Glue versões disponíveis e das versões do Spark compatíveis com elas, consulte a [AWS Glue documentação](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
+ **Otimize a memória do AWS Glue trabalho** — siga as recomendações na postagem do AWS blog [Otimize o gerenciamento de memória em AWS Glue](https://aws.amazon.com/blogs/big-data/optimize-memory-management-in-aws-glue/).
+ **Use o AWS Glue Auto Scaling** — Quando você ativa o Auto Scaling AWS Glue , ajusta automaticamente o número de trabalhadores dinamicamente com base na sua AWS Glue carga de trabalho. Isso ajuda a reduzir o custo do seu AWS Glue trabalho durante picos de carga, porque AWS Glue reduz o número de trabalhadores quando a carga de trabalho é pequena e os trabalhadores estão ociosos. Para usar o AWS Glue Auto Scaling, você especifica um número máximo de trabalhadores para os quais seu AWS Glue trabalho pode ser escalado. Para obter mais informações, consulte [Como usar o escalonamento automático](https://docs.aws.amazon.com/glue/latest/dg/auto-scaling.html)AWS Glue na AWS Glue documentação.
+ **Use a versão desejada do Iceberg** — a integração AWS Glue nativa com o Iceberg é melhor para começar a usar o Iceberg. No entanto, para cargas de trabalho de produção, recomendamos que você adicione dependências de biblioteca (conforme discutido [anteriormente neste guia](#glue-custom-integration)) para ter controle total sobre a versão do Iceberg. Essa abordagem ajuda você a se beneficiar dos recursos mais recentes do Iceberg e das melhorias de desempenho em seus AWS Glue trabalhos.
+ **Ative a interface do Spark para monitoramento e depuração** — Você também pode usar a [interface do Spark para AWS Glue inspecionar sua tarefa do Iceberg, visualizando os diferentes estágios de uma tarefa do Spark em](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui.html) um gráfico acíclico direcionado (DAG) e monitorando as tarefas em detalhes. A interface do usuário do Spark fornece uma maneira eficaz de solucionar problemas e otimizar as tarefas do Iceberg. Por exemplo, você pode identificar estágios de gargalo que apresentam grandes confusões ou vazamento de disco para identificar oportunidades de ajuste. Para obter mais informações, consulte [Monitoramento de trabalhos usando a interface web do Apache Spark](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui.html) na AWS Glue documentação.