

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

# Arquitetura
<a name="architecture"></a>

O diagrama a seguir mostra a arquitetura da solução descrita neste guia. Um AWS Glue trabalho lê dados de um bucket do [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)), que é um serviço de armazenamento de objetos baseado em nuvem que ajuda você a armazenar, proteger e recuperar dados. Você pode iniciar o AWS Glue Spark SQL trabalho por meio do Console de gerenciamento da AWS, [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ou da AWS Glue API. O AWS Glue Spark SQL trabalho processa os dados brutos em um bucket do Amazon S3 e, em seguida, armazena os dados processados em um bucket diferente.



![AWS Glue com Spark SQL processamento de dados brutos em um bucket do Amazon S3](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/spark-tuning-glue-emr/images/aws-glue-processing-S3-data.png)


Por exemplo, este guia descreve um [AWS GlueSpark SQLtrabalho](https://docs.aws.amazon.com/glue/latest/dg/etl-jobs-section.html) básico, escrito em Python e Spark SQL (PySpark). Esse AWS Glue trabalho é usado para demonstrar as melhores práticas de Spark SQL ajuste. Embora este guia se concentre em AWS Glue, as melhores práticas deste guia também se aplicam aos trabalhos do [Amazon EMR. Spark SQL](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html)

O diagrama a seguir mostra o ciclo de vida de uma consulta. Spark SQL O Spark SQL Catalyst Optimizer gera um plano de consulta. Um *plano de consulta* é uma série de etapas, como instruções, usadas para acessar os dados em um sistema de banco de dados relacional SQL. Para desenvolver um plano de Spark SQL consulta com desempenho otimizado, a primeira etapa é visualizar o `EXPLAIN` plano, interpretar o plano e, em seguida, ajustá-lo. Você pode usar a interface Spark SQL do usuário (UI) ou o Servidor de Spark SQL Histórico para visualizar o plano.



![Ciclo de vida de uma Spark SQL consulta para criar um conjunto de dados distribuído resiliente (RDD)](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/spark-tuning-glue-emr/images/spark-sql-query-lifecycle.png)


SparkO Catalyst Optimizer converte o plano de consulta inicial em um plano de consulta otimizado da seguinte forma:

1. **APIs de análise e declarativas** — A fase de análise é a primeira etapa. O *plano lógico não resolvido*, em que os objetos referenciados na consulta SQL não são conhecidos ou não correspondem a uma tabela de entrada, é gerado com atributos e tipos de dados não vinculados. Em seguida, o Spark SQL Catalyst Optimizer aplica um conjunto de regras para criar um plano lógico. O analisador SQL pode gerar uma Árvore de Sintaxe Abstrata SQL (AST) e fornecê-la como uma entrada para o plano lógico. A entrada também pode ser um quadro de dados ou um objeto de conjunto de dados que é construído usando uma API. A tabela a seguir mostra quando você deve usar SQL, quadros de dados ou conjuntos de dados.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/spark-tuning-glue-emr/architecture.html)

   Para obter mais informações sobre os tipos de entradas, consulte o seguinte:
   + Uma API de conjunto de dados fornece uma versão **digitada**. Isso reduz o desempenho devido à forte dependência das funções lambda definidas pelo usuário. O RDD ou os conjuntos de dados são digitados estaticamente. Por exemplo, ao definir um RDD, você precisa fornecer explicitamente a definição do esquema.
   + Uma API de quadro de dados fornece operações relacionais **não digitadas**. Os quadros de dados são digitados dinamicamente. Semelhante ao RDD, quando você define um quadro de dados, o esquema permanece o mesmo. Os dados ainda estão estruturados. No entanto, essas informações só estão disponíveis em tempo de execução. Isso permite que o compilador escreva SQL-like instruções e defina novas colunas em tempo real. Por exemplo, ele pode acrescentar colunas a um quadro de dados existente sem precisar definir uma nova classe para cada operação.
   + Uma Spark SQL consulta é avaliada em busca de erros de sintaxe e análise durante o tempo de execução, o que proporciona tempos de execução mais rápidos.

1. **Catálogo** — **Spark SQL**usa Apache Hive Metastore (HMS) para gerenciar os metadados de entidades relacionais persistentes, como bancos de dados, tabelas, colunas e partições.

1. **Otimização** —**** O otimizador reescreve o plano de consulta usando heurística e custo. Ele faz o seguinte para produzir um plano lógico otimizado:

   1. Colunas de ameixas

   1. Reduz os predicados

   1. Reordena uniões

1. **Planos físicos e o planejador** — O Spark SQL Catalyst Optimizer converte o plano lógico em um conjunto de planos físicos. Isso significa que ele converte o *quê* em *como*.

1. **Planos físicos selecionados** — O Spark SQL Catalyst Optimizer seleciona o plano físico mais econômico.

1. **Plano de consulta otimizado** — Spark SQL executa o plano de consulta otimizado para desempenho e custo. Spark SQL O Gerenciamento de Memória rastreia o uso da memória e distribui a memória entre tarefas e operadores. O motor Spark SQL Tungsten pode melhorar substancialmente a eficiência da memória e da CPU para aplicativos. Spark SQL Ele também implementa o processamento de modelos de dados binários e opera diretamente em dados binários. Isso ignora a necessidade de desserialização e reduz significativamente a sobrecarga associada à conversão e desserialização de dados.