

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á.

# Otimize a ingestão de ETL do tamanho do arquivo de entrada na AWS
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws"></a>

*Apoorva Patrikar, Amazon Web Services*

## Resumo
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-summary"></a>

Esse padrão mostra como otimizar a etapa de ingestão do processo de extração, transformação e carregamento (ETL) para big data e cargas de trabalho do Apache Spark no AWS Glue otimizando o tamanho do arquivo antes de processar seus dados. Use esse padrão para evitar ou resolver o *problema de arquivos pequenos*. Ou seja, quando um grande número de arquivos pequenos retarda o processamento de dados devido ao tamanho agregado dos arquivos. Por exemplo, centenas de arquivos com apenas algumas centenas de kilobites cada podem reduzir significativamente as velocidades de processamento de dados para suas tarefas do AWS Glue. Isso ocorre porque o AWS Glue deve executar funções de lista internas no Amazon Simple Storage Service (Amazon S3) e o YARN (Yet Another Resource Negotiator) deve armazenar uma grande quantidade de metadados. Para melhorar a velocidade de processamento de dados, você pode usar o agrupamento para permitir que suas tarefas de ETL leiam um grupo de arquivos de entrada em uma única partição na memória. A partição agrupa automaticamente arquivos menores. Como alternativa, você pode usar código personalizado para adicionar lógica de lote aos seus arquivos existentes.

## Pré-requisitos e limitações
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um ou mais [trabalhos](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) da AWS Glue
+ Uma ou mais cargas de trabalho de big data ou [Apache Spark](https://spark.apache.org/)
+ Um [bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)

## Arquitetura
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-architecture"></a>

O padrão a seguir mostra como os dados em diferentes formatos são processados por uma tarefa do AWS Glue e, em seguida, armazenados em um bucket do S3 para obter visibilidade da performance.

![\[Dados em diferentes formatos são processados por um trabalho do AWS Glue e, em seguida, armazenados em um bucket do S3.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/88ee332f-2f12-4d88-b491-e78bbb173850/images/9a97b54a-3f67-4a48-94d2-5807373ace25.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. 
**nota**  
Uma tarefa do AWS Glue converte arquivos pequenos nos formatos CSV, JSON e Parquet em quadros dinâmicos. : Entre os fatores, o tamanho do arquivo de entrada exerce o maior impacto na performance do trabalho do AWS Glue.

1. A tarefa do AWS Glue executa funções de lista internas em um bucket do S3.

## Ferramentas
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-tools"></a>
+ [O AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de ETL totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

## Épicos
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-epics"></a>

### Uso do agrupamento para otimizar a ingestão de dados de ETL durante a leitura
<a name="use-grouping-to-optimize-etl-ingestion-during-reading"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Especifique o tamanho do grupo. | Se você tiver mais de 50.000 arquivos, o agrupamento é feito por padrão. No entanto, você também pode usar o agrupamento para menos de 50.000 arquivos especificando o tamanho do grupo no parâmetro `connectionOptions`. O parâmetro `connectionOptions` está no método `create_dynamic_frame.from_options`. | Engenheiro de dados | 
| Escreva o código de agrupamento. | Use o método `create_dynamic_frame` para criar um quadro dinâmico. Por exemplo:<pre>S3bucket_node1 = glueContext.create_dynamic_frame.from_options(<br />    format_options={"multiline": False},<br />    connection_type="s3",<br />    format="json",<br />    connection_options={<br />        "paths": ["s3://bucket/prefix/file.json"],<br />        "recurse": True,<br />        "groupFiles": 'inPartition', <br />        "groupSize": 1048576<br />    },<br />    transformation_ctx="S3bucket_node1",<br />)</pre>Use `groupFiles` para agrupar arquivos em um grupo de partições do Amazon S3. Use `groupSize` para definir o tamanho alvo do grupo a ser lido na memória. Especifique `groupSize` em bytes (1048576 = 1 MB). | Engenheiro de dados | 
| Adicione o código ao fluxo de trabalho. | Adicione o código de agrupamento ao seu [fluxo de trabalho](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) no AWS Glue. | Engenheiro de dados | 

### Use a lógica personalizada para otimizar a ingestão de ETL
<a name="use-custom-logic-to-optimize-etl-ingestion"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Escolha o idioma e a plataforma de processamento. | Escolha a linguagem de script e a plataforma de processamento adaptadas ao seu caso de uso. | Arquiteto de nuvem | 
| Escrever o código | Escreva a lógica personalizada para agrupar seus arquivos. | Arquiteto de nuvem | 
| Adicione o código ao fluxo de trabalho. | Adicione o código ao seu [fluxo de trabalho](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) no AWS Glue. Isso permite que sua lógica personalizada seja aplicada sempre que a tarefa for executada. | Engenheiro de dados | 

### Repartição dos dados ao gravá-los após a transformação
<a name="repartition-when-writing-data-after-transformation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise os padrões de consumo. | Entenda de que forma as aplicações downstream utilizarão os dados que você grava. Por exemplo, se as aplicações consultam os dados diariamente e você os particiona apenas por região ou conta com arquivos de saída muito pequenos, como 2,5 KB por arquivo, isso não é otimizado para consumo. | DBA | 
| Particione novamente os dados antes de gravá-los. | Faça a repartição considerando junções ou consultas durante o processamento (de acordo com a lógica de processamento) e depois do processamento (de acordo com o consumo). Por exemplo, reparticione com base no tamanho em bytes, como `.repartition(100000)`, ou realize a repartição com base em colunas, como `.repartition("column_name")`. | Engenheiro de dados | 

## Recursos relacionados
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-resources"></a>
+ [Ler arquivos de entrada em grupos maiores](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html)
+ [Monitoramento do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-glue.html)
+ [Monitoramento do AWS Glue usando CloudWatch métricas da Amazon](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)
+ [Monitoramento e depuração de trabalho](https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
+ [Comece a usar o ETL com tecnologia sem servidor no AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/welcome.html)

## Mais informações
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-additional"></a>

**Determinando o tamanho do arquivo**

Não há uma maneira simples de determinar se o tamanho do arquivo é muito grande ou muito pequeno. O impacto do tamanho do arquivo no desempenho do processamento depende da configuração do seu cluster. No núcleo do Hadoop, recomendamos que você use arquivos de 128 MB ou 256 MB para aproveitar ao máximo o tamanho do bloco.

Para a maioria das workloads de arquivos de texto no AWS Glue, recomendamos um tamanho de arquivo entre 100 MB e 1 GB para um cluster de 5 a 10 DPU. Para descobrir o melhor tamanho dos arquivos de entrada, monitore a seção de pré-processamento da sua tarefa do AWS Glue e, em seguida, verifique a utilização da CPU e da memória da tarefa.

**Considerações adicionais**

Se o desempenho nos estágios iniciais do ETL for um gargalo, considere agrupar ou mesclar os arquivos de dados antes do processamento. Se você tiver controle total sobre o processo de geração de arquivos, pode ser ainda mais eficiente agregar pontos de dados no próprio sistema de origem antes que os dados brutos sejam enviados para a AWS.