Configurando as propriedades da tarefa para tarefas do Spark no AWS Glue
Um trabalho do AWS Glue encapsula um script que se conecta aos dados de origem, os processa e, depois, os grava no destino de dados. Normalmente, um trabalho executa scripts de extração, transformação e carga (ETL). Os trabalhos também podem executar scripts Python de uso geral (trabalhos do shell do Python). Os acionadores do AWS Glue podem iniciar trabalhos com base em uma programação ou um evento, ou sob demanda. É possível monitorar trabalhos para entender as métricas do runtime, status de conclusão, duração e hora de início.
Você pode usar scripts gerados pelo AWS Glue ou fornecer os seus próprios scripts. Com um esquema de origem e um local ou esquema de destino, o gerador de AWS Glue código pode criar automaticamente um script da API Apache Spark (). PySpark Você pode usar esse script como ponto de partida e editá-lo para atingir seus objetivos.
O AWS Glue pode escrever arquivos de saída em vários formatos de dados, incluindo JSON, CSV, ORC (Optimized Row Columnar), Apache Parquet e Apache Avro. Para alguns formatos de dados, é possível gravar formatos de compressão comuns.
Existem três tipos de trabalhos no AWS Glue: Spark, Streaming ETL e shell Python.
Uma tarefa do Spark é executada em um ambiente Apache Spark gerenciado pelo. AWS Glue Ele processa os dados em lotes.
-
Um trabalho de ETL de streaming é semelhante a um trabalho do Spark, exceto que ele executa ETL em streams de dados. Ele usa o framework do Apache Spark Structured Streaming. Alguns recursos de trabalho do Spark não estão disponíveis para trabalhos ETL de streaming.
-
O trabalho do Shell do Python executa scripts Python como shell e é compatível com uma versão de Python que depende da versão do AWS Glue que você estiver usando. É possível usar esses trabalhos para programar e executar tarefas que não exigem um ambiente do Apache Spark.
Definir propriedades de trabalho para trabalhos do Spark
Ao definir o trabalho no console do AWS Glue, você fornece valores às propriedades para controlar o ambiente do runtime do AWS Glue.
A lista a seguir descreve as propriedades de um trabalho do Spark. Para as propriedades de um trabalho de shell do Python, consulte Definir propriedades de trabalho para trabalhos de shell Python. Para obter propriedades de um trabalho de ETL de streaming, consulte Definir propriedades de trabalho para um trabalho de ETL de transmissão.
As propriedades estão listadas na ordem em que aparecem no assistente de Add job (Adicionar trabalho) no console do AWS Glue.
- Nome
-
Forneça uma string UTF-8 com um tamanho máximo de 255 caracteres.
- Descrição
-
Forneça uma descrição opcional da sua implantação com até 2048 caracteres.
- Perfil do IAM
-
Especifique a função do IAM usada para a autorização de recursos necessários para a execução do trabalho e acesso aos armazenamentos de dados. Para obter mais informações sobre permissões de execução de trabalho no AWS Glue, consulte Gerenciamento de identidade e acesso do AWS Glue.
- Tipo
-
O tipo de trabalho de ETL. Ele é definido automaticamente com base no tipo das fontes de dados selecionadas.
-
Spark executa um script de ETL do Apache Spark com o comando de trabalho
glueetl
. -
Spark Streaming executa um script de ETL de streaming do Apache Spark com o comando de trabalho
gluestreaming
. Para ter mais informações, consulte Trabalhos de transmissão de ETL no AWS Glue. -
Shell do Python executa um script do Python com o comando de trabalho
pythonshell
. Para ter mais informações, consulte Configurar propriedades de trabalho para trabalhos de shell Python no AWS Glue.
-
- versão do AWS Glue
-
A versão do AWS Glue determina as versões do Apache Spark e do Python que estão disponíveis para o trabalho, conforme especificado na tabela a seguir.
Versão do AWS Glue Versões compatíveis do Spark e do Python 4,0 -
Spark 3.3.0
-
Python 3.10
3.0 -
Spark 3.1.1
-
Python 3.7
2,0 -
Spark 2.4.3
-
Python 3.7
1,0 -
Spark 2.4.3
-
Python 2.7
-
Python 3.6
0.9 -
Spark 2.2.1
-
Python 2.7
-
- Tipo de operador
-
Os seguintes tipos de operadores estão disponíveis:
Os recursos disponíveis para os AWS Glue trabalhadores são medidos em DPUs. Uma DPU é uma medida relativa do poder de processamento que consiste em uma capacidade computacional de 4 vCPUs e 16 GB de memória.
-
G.1X
: ao escolher esse tipo, você também fornece um valor para Number of workers (Número de operadores). Cada operador mapeia para 1 DPU (4 vCPUs, 16 GB de memória) com 84 GB de disco (aproximadamente 34 GB livres). Recomendamos esse tipo de operador para workloads, como transformações de dados, uniões e consultas, para oferecer uma maneira escalável e econômica de executar a maioria dos trabalhos. -
G.2X
: ao escolher esse tipo, você também fornece um valor para Number of workers (Número de operadores). Cada operador mapeia para 2 DPU (8 vCPUs, 32 GB de memória) com 128 GB de disco (aproximadamente 77 GB livres). Recomendamos esse tipo de operador para workloads, como transformações de dados, uniões e consultas, para oferecer uma maneira escalável e econômica de executar a maioria dos trabalhos. -
G.4X
: ao escolher esse tipo, você também fornece um valor para Number of workers (Número de operadores). Cada operador mapeia para 4 DPU (16 vCPUs, 64 GB de memória) com 256 GB de disco (aproximadamente 235 GB livres). Recomendamos esse tipo de operador para trabalhos cujas workloads contêm as transformações, agregações, uniões e consultas mais exigentes. Esse tipo de trabalhador está disponível somente para trabalhos ETL da AWS Glue versão 3.0 ou posterior do Spark AWS nas seguintes regiões: Leste dos EUA (Ohio), Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Sydney), Ásia-Pacífico (Tóquio), Canadá (Central), Europa (Frankfurt), Europa (Irlanda) e Europa (Estocolmo). -
G.8X
: ao escolher esse tipo, você também fornece um valor para Number of workers (Número de operadores). Cada operador mapeia para 8 DPU (32 vCPUs, 128 GB de memória) com 512 GB de disco (aproximadamente 487 GB livres). Recomendamos esse tipo de operador para trabalhos cujas workloads contêm as transformações, agregações, uniões e consultas mais exigentes. Esse tipo de trabalhador está disponível somente para trabalhos ETL da AWS Glue versão 3.0 ou posterior do Spark, nas mesmas AWS regiões compatíveis com o tipo deG.4X
trabalhador. -
G.025X
: ao escolher esse tipo, você também fornece um valor para Number of workers (Número de operadores). Cada operador mapeia para 0,25 DPU (2 vCPUs, 4 GB de memória) com 84 GB de disco (aproximadamente 34 GB livres). Recomendamos esse tipo de operador para trabalhos de streaming de baixo volume. Esse tipo de operador só está disponível para trabalhos de streaming AWS Glue versão 3.0.
É cobrada uma taxa por hora com base no número de DPUs usadas para executar os trabalhos de ETL. Para obter mais informações, consulte a página de definição de preços do AWS Glue
. Com trabalhos do AWS Glue versão 1.0 ou anterior, quando você configura um trabalho usando o console e especifica um Worker type (Tipo de operador) como Standard (Padrão), a Maximum capacity (Capacidade máxima) é definida e o Number of workers (Número de operadores) torna-se o valor de Maximum capacity (Capacidade máxima) - 1. Se você usar o AWS Command Line Interface (AWS CLI) ou o AWS SDK, poderá especificar o parâmetro de capacidade máxima ou especificar o tipo de trabalhador e o número de trabalhadores.
Para trabalhos do AWS Glue versão 2.0 ou posterior, não é possível especificar uma capacidade máxima. Em vez disso, você deve especificar um Worker type (Tipo de operador) e o Number of workers (Número de operadores).
-
- Idioma
-
O código no script de ETL define a lógica do trabalho. O script pode ser codificado em Python ou Scala. Você pode escolher se o script que o trabalho executa é gerado pelo AWS Glue ou fornecido por você. É possível fornecer o nome e o local do script no Amazon Simple Storage Service (Amazon S3). Confirme se não existe um arquivo com o mesmo nome que o diretório do script no caminho. Para saber mais sobre como escrever scripts, consulte Guia de programação do AWS Glue.
- O número solicitado de operadores
-
Para a maioria dos tipos de trabalho, é necessário especificar o número de operadores alocados quando o trabalho é executado.
- Marcador de trabalho
-
Especifique como o AWS Glue processa essas informações de estado quando o trabalho é executado. É possível lembrar de dados previamente processados, atualizar informações de estado ou ignorar informações de estado. Para ter mais informações, consulte Rastrear dados processados usando marcadores de trabalho.
- Execução flexível
-
Ao configurar um trabalho usando o AWS Studio ou a API, você pode especificar uma classe de execução de trabalho padrão ou flexível. Seus trabalhos podem ter graus diversos de prioridade e sensibilidade ao tempo. A classe de execução padrão é ideal para workloads sensíveis ao tempo que exigem a inicialização rápida de trabalhos e recursos dedicados.
A classe de execução flexível é adequada para trabalhos não urgentes, como trabalhos de pré-produção, testes e cargas de dados únicas. Execuções flexíveis de trabalho são compatíveis com trabalhos que usem o AWS Glue versão 3.0 ou posterior e os tipos de operador
G.1X
ouG.2X
.As execuções flexíveis de trabalho são cobradas com base no número de operadores em execução a qualquer momento. É possível adicionar ou remover o número de operadores para uma execução flexível de trabalho que esteja em andamento. Em vez de faturar como um simples cálculo de
Max Capacity
*Execution Time
, cada operador contribuirá pelo tempo durante o qual foi executado na execução do trabalho. A conta é a soma de (Number of DPUs per worker
*time each worker ran
).Para obter mais informações, consulte o painel de ajuda no AWS Studio ou Tarefas Execuções de trabalhos e.
- Número de novas tentativas
-
Especifique o número de vezes, de 0 a 10, que o AWS Glue deve reiniciar automaticamente o trabalho em caso de falha. Os trabalhos que atingem o limite de tempo não são reiniciados.
- Tempo limite de trabalho
-
Define o tempo máximo de execução em minutos. O padrão é 2.880 minutos (48 horas) para trabalhos em lotes. Quando o tempo de execução do trabalho excede esse limite, o estado da execução do trabalho é alterado para
TIMEOUT
.Os trabalhos de streaming devem ter valores de tempo limite inferiores a 7 dias ou 100 a 80 minutos. Quando o valor for deixado em branco, o trabalho será reiniciado após 7 dias, caso você não tenha configurado uma janela de manutenção. Se você configurou uma janela de manutenção, ela será reiniciada durante a janela de manutenção após 7 dias.
Práticas recomendadas para tempos limite de trabalhos
Os trabalhos são cobrados com base no tempo de execução. Para evitar cobranças inesperadas, configure valores de tempo limite apropriados para o tempo de execução esperado do seu trabalho.
- Propriedades avançadas
-
- Nome do arquivo de script
-
Um nome de script exclusivo para seu trabalho. Não pode ser nomeado Trabalho sem título.
- Caminho do script
-
A localização do Amazon S3 do script. O caminho deve estar no formato
s3://bucket/prefix/path/
. Ele deve terminar com uma barra (/
) e não incluir arquivos. - Métricas de trabalho
-
Ative ou desative a criação de CloudWatch métricas da Amazon quando esse trabalho for executado. Para ver os dados de criação de perfil, você deve habilitar essa opção. Para obter mais informações sobre como ativar e visualizar as métricas, consulte Monitoramento e depuração de trabalho.
- Métricas de observabilidade do trabalho
-
Ative a criação de CloudWatch métricas adicionais de observabilidade quando esse trabalho for executado. Para ter mais informações, consulte Monitoramento com métricas de observabilidade do AWS Glue.
- Registro em log contínuo
-
Ative o registro contínuo na Amazon CloudWatch. Se esta opção não estiver habilitada, os logs estarão disponíveis somente após o trabalho ser concluído. Para ter mais informações, consulte Registro contínuo para trabalhos do AWS Glue.
- IU do Spark
-
Ative o uso da interface do usuário do Spark para monitorar esse trabalho. Para ter mais informações, consulte Habilitar a interface do usuário da Web do Apache Spark para trabalhos do AWS Glue.
- Caminho dos logs da interface do usuário do Spark
-
O caminho para gravar logs quando a interface do usuário do Spark está habilitada.
- Configuração de log e monitoramento da interface do usuário do Spark
-
Escolha uma das seguintes opções:
Padrão: grave registros usando o ID de execução do AWS Glue trabalho como nome do arquivo. Ative o monitoramento da interface do Spark no AWS Glue console.
Legado: grave logs usando "spark-application- {timestamp}" como nome do arquivo. Não ative o monitoramento da interface do usuário do Spark.
Padrão e legado: grave logs nos locais padrão e legados. Ative o monitoramento da interface do Spark no AWS Glue console.
- Máximo de simultaneidade
-
Define o número máximo de execuções simultâneas permitidas para o trabalho. O padrão é um. Um erro será retornado quando este limite for atingido. O valor máximo que você pode especificar é controlado por um limite de serviço. Por exemplo, se a execução anterior de um trabalho ainda estiver sendo realizada quando uma nova instância for iniciada, convém retornar um erro para evitar que duas instâncias do mesmo trabalho sejam executadas simultaneamente.
- Caminho temporário
-
Informe o local de um diretório de trabalho no Amazon S3 onde os resultados intermediários temporários serão gravados quando o AWS Glue executar o script. Confirme se não existe um arquivo com o mesmo nome que o diretório temporário no caminho. Esse diretório é usado quando o AWS Glue lê e grava no Amazon Redshift e por determinadas transformações do AWS Glue.
nota
O AWS Glue criará um bucket temporário para trabalhos se um bucket ainda não existir em uma região. Esse bucket pode permitir o acesso público. Você pode modificar o bucket no Amazon S3 para definir o bloco de acesso público ou excluir o bucket mais tarde, depois que todos os trabalhos nessa região forem concluídos.
- Limite de notificação de atraso (minutos)
-
Define o valor mínimo (em minutos) antes que uma notificação de atraso seja enviada. Você pode definir esse limite para enviar notificações quando uma execução de trabalho
RUNNING
,STARTING
ouSTOPPING
levar mais do que o número de minutos esperado. - Configuração de segurança
-
Escolha uma configuração de segurança na lista. Uma configuração de segurança especifica como os dados no destino do Amazon S3 são criptografados: sem criptografia, criptografia no lado do servidor com chaves gerenciadas pelo AWS KMS(SSE-KMS) ou chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3).
- Criptografia do lado do servidor
-
Se você selecionar essa opção, quando o trabalho de ETL gravar no Amazon S3, os dados serão criptografados em repouso usando criptografia SSE-S3. Tanto o seu destino de dados do Amazon S3 quanto outros dados gravados em um diretório temporário do Amazon S3 serão criptografados. Essa opção é passada como um parâmetro de trabalho. Para obter mais informações, consulte Proteção de dados usando criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) no Manual do usuário do Amazon Simple Storage Service.
Importante
Esta opção será ignorada se uma configuração de segurança for especificada.
- Usar o catálogo de dados do Glue como metastore do Hive
-
Selecione para usar o AWS Glue Data Catalog como a metastore do Hive. A função do IAM usada para o trabalho deve ter a permissão
glue:CreateDatabase
. Um banco de dados chamado “default” (padrão) é criado no Data Catalog, caso não exista.
- Conexões
-
Escolha uma configuração de VPC para acessar fontes de dados do Amazon S3 localizadas na sua nuvem privada virtual (VPC). É possível criar e gerenciar a conexão de rede no AWS Glue. Para ter mais informações, consulte Conectar a dados.
- Bibliotecas
-
- Caminho da biblioteca Python, caminho dos JARs dependentes e caminho de arquivos referenciados
-
Especifique essas opções se o script precisar. É possível definir os caminhos do Amazon S3 separados por vírgulas para essas opções ao definir o trabalho. Você pode substituir esses caminhos ao executar o trabalho. Para ter mais informações, consulte Fornecer seus próprios scripts personalizados.
- Parâmetros de trabalho
-
Um conjunto de pares de valor-chave que são transmitidos como parâmetros nomeados para o script. Esses são valores padrão que são usados quando o script é executado, mas é possível substituí-los em trigger ou ao executar o trabalho. É necessário iniciar o nome da chave com
--
; por exemplo:--myKey
. Você passa os parâmetros do trabalho como um mapa ao usar AWS Command Line Interface o.Para ver exemplos, consulte os parâmetros Python em Transmitir e acessar parâmetros de Python no AWS Glue.
- Tags
-
Marque o trabalho com uma Tag key (Chave de tag) e um Tag value (Valor de tag) opcional. Depois que as chaves de tags são criadas, elas são somente leitura. Use as tags em alguns recursos para ajudar a organizá-los e identificá-los. Para ter mais informações, consulte Etiquetas da AWS no AWS Glue.
Restrições para trabalhos que acessam tabelas gerenciadas pelo Lake Formation
Lembre-se das seguintes notas e restrições ao criar trabalhos que leem ou gravam em tabelas gerenciadas por AWS Lake Formation:
-
Não há suporte para os seguintes recursos em trabalhos que acessem tabelas com filtros no nível da célula: