Usar parâmetros de tarefa em tarefas do AWS Glue - AWS Glue

Usar parâmetros de tarefa em tarefas do AWS Glue

Ao criar uma tarefa do AWS Glue, você define alguns campos padrão, como Role e WorkerType. Você pode fornecer informações adicionais de configuração por meio dos campos Argument (Job Parameters no console). Nesses campos, você pode fornecer trabalhos do AWS Glue com os argumentos (parâmetros) listados neste tópico. Para obter mais informações sobre a API do AWS Glue, consulte Tarefas.

Definir parâmetros de trabalho

Você pode configurar um trabalho pelo console, na guia Job details (Detalhes do trabalho), no cabeçalho Job Parameters (Parâmetros do trabalho). Você também pode configurar um trabalho usando a AWS CLI definindo DefaultArguments ou NonOverridableArguments em um trabalho ou definindo Arguments em uma execução de trabalho. Os argumentos definidos no trabalho serão transmitidos toda vez que o trabalho for executado, enquanto os argumentos definidos na execução do trabalho serão transmitidos somente para essa execução individual.

Por exemplo, seguir temos a sintaxe para a execução de um trabalho usando --arguments para definir um parâmetro do trabalho.

$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'

Acessar parâmetros do trabalho

Ao escrever scripts AWS Glue, talvez você queira acessar os valores dos parâmetros do trabalho para alterar o comportamento do seu próprio código. Fornecemos métodos auxiliares para fazer isso em nossas bibliotecas. Esses métodos resolvem os valores dos parâmetros de execução do trabalho que substituem os valores dos parâmetros do trabalho. Ao resolver parâmetros definidos em vários locais, o trabalho NonOverridableArguments substituirá a execução do trabalho Arguments, que substituirá o trabalho. DefaultArguments

No Python:

Em trabalhos do Python, fornecemos uma função denominada getResolvedParameters. Para ter mais informações, consulte Acessar parâmetros usando getResolvedOptions. Os parâmetros do trabalho estão disponíveis na variável sys.argv.

No Scala:

Em trabalhos do Scala, fornecemos um objeto denominado GlueArgParser. Para ter mais informações, consulte APIs GlueArgParser em Scala no AWS Glue. Os parâmetros do trabalho estão disponíveis na variável sysArgs.

Referência de parâmetros de trabalho

O AWS Glue reconhece os seguintes nomes de argumento que podem ser usados para configurar o ambiente de script para os trabalhos e as execuções de trabalho:

--additional-python-modules

Uma lista delimitada por vírgulas representando um conjunto de pacotes do Python a serem instalados. Você pode instalar pacotes do PyPI ou fornecer uma distribuição personalizada. Uma entrada de pacote PyPI estará no formato package==version, com o nome PyPI e a versão do seu pacote de destino. Uma entrada de distribuição personalizada é o caminho do S3 para a distribuição.

As entradas usam a correspondência de versão do Python para combinar pacote e versão. Isso significa que você precisará usar dois sinais de igual, como ==. Existem outros operadores de correspondência de versão. Para obter mais informações, consulte PEP 440.

Para passar as opções de instalação do módulo para o pip3, use o parâmetro --python-modules-installer-option.

--auto-scale-within-microbatch

O valor padrão é falso. Esse parâmetro só pode ser usado para trabalhos de streaming do AWS Glue, os quais processam os dados de streaming em uma série de microlotes, e o ajuste de escala automático deve estar habilitado. Ao definir esse valor como falso, ele calcula a média móvel exponencial da duração do lote para microlotes concluídos e compara esse valor com o tamanho da janela para determinar se o número de executores deve ser aumentado ou reduzido. O ajuste de escala só acontece quando um microlote é concluído. Ao definir esse valor como verdadeiro, durante um microlote, ele aumenta a escala verticalmente quando o número de tarefas do Spark permanece o mesmo por 30 segundos ou o processamento em lote atual é maior que o tamanho da janela. O número de executores diminuirá se um executor ficar inativo por mais de 60 segundos ou se a média móvel exponencial da duração do lote for baixa.

--class

A classe Scala que serve como ponto de entrada para o seu script Scala. Isso se aplicará somente se --job-language for definido como scala.

--continuous-log-conversionPattern

Especifica um padrão personalizado de conversão de logs para um trabalho habilitado para registro em log contínuo. O padrão de conversão só se aplica a logs de driver e logs de executor. Isso não afeta a barra de progresso do AWS Glue.

--continuous-log-logGroup

Especifica um nome de grupo de logs do Amazon CloudWatch personalizado para um trabalho habilitado para registro em log contínuo.

--continuous-log-logStreamPrefix

Especifica um prefixo de fluxo de logs do CloudWatch personalizado para um trabalho habilitado para registro em log contínuo.

--customer-driver-env-vars e --customer-executor-env-vars

Esses parâmetros definem variáveis de ambiente no sistema operacional, respectivamente, para cada operador (driver ou executor). É possível usar esses parâmetros ao criar plataformas e estruturas personalizadas com base no AWS Glue para permitir que seus usuários escrevam trabalhos em cima dele. A ativação desses dois sinalizadores permitirá definir variáveis de ambiente diferentes no driver e no executor, respectivamente, sem precisar injetar a mesma lógica no próprio script de trabalho.

Exemplo de uso

Este exemplo mostra como usar esses parâmetros:

"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"

Defini-los no argumento de execução do trabalho equivale a executar os seguintes comandos:

No driver:

  • export CUSTOMER_KEY1=VAL1

  • export CUSTOMER_KEY2="val2,val2 val2"

No executor:

  • export CUSTOMER_KEY3=VAL3

Em seguida, no próprio script de trabalho, você pode recuperar as variáveis de ambiente usando os.environ.get("CUSTOMER_KEY1") ou System.getenv("CUSTOMER_KEY1").

Sintaxe imposta

Observe os seguintes padrões ao definir variáveis de ambiente:

  • Cada chave deve ter o CUSTOMER_ prefix.

    Por exemplo: para "CUSTOMER_KEY3=VAL3,KEY4=VAL4", KEY4=VAL4 será ignorado e não definido.

  • Cada par de chave e valor deve ser delineado com uma única vírgula.

    Por exemplo: "CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"

  • Se o "valor" tiver espaços ou vírgulas, ele deverá ser definido entre aspas.

    Por exemplo: CUSTOMER_KEY2=\"val2,val2 val2\"

Essa sintaxe modela de perto os padrões de configuração de variáveis de ambiente bash.

--datalake-formats

Compatível com o AWS Glue 3.0 e versões posteriores.

Especifica a estrutura de data lake a ser usada. AWS O Glue adiciona os arquivos JAR necessários para as estruturas que você especifica no classpath. Para ter mais informações, consulte Usar estruturas de data lake com trabalhos do AWS Glue ETL.

Você pode especificar um ou mais dos seguintes valores, separados por uma vírgula:

  • hudi

  • delta

  • iceberg

Por exemplo, passe o argumento a seguir para especificar todas as três estruturas.

'--datalake-formats': 'hudi,delta,iceberg'
--disable-proxy-v2

Desabilite o proxy de serviço para permitir chamadas de serviço da AWS para o Amazon S3, o CloudWatch e o AWS Glue originadas por seu script através da VPC. Para mais informações, consulte Configurar chamadas do AWS para passarem pela VPC. Para desativar o proxy do serviço, defina o valor desse parâmetro como true.

--enable-auto-scaling

Ativa o recurso para usar escalação automática e faturamento por processador quando você define o valor como true.

--enable-continuous-cloudwatch-log

Habilita o registro em log contínuo e em tempo real para trabalhos do AWS Glue. Você pode visualizar logs de trabalho do Apache Spark em tempo real no CloudWatch.

--enable-continuous-log-filter

Especifica um filtro padrão (true) ou nenhum filtro (false) quando você cria ou edita um trabalho habilitado para registro em log contínuo. Escolher o filtro padrão elimina o driver/executor desnecessário do Apache Spark e mensagens de log de heartbeat do Apache Hadoop YARN. Não escolher filtros fornece todas as mensagens de log.

--enable-glue-datacatalog

Habilita o uso do AWS Glue Data Catalog como um metastore do Apache Spark Hive. Para habilitar esse recurso, defina o valor como true.

--enable-job-insights

Permite o monitoramento adicional de análise de erros com informações sobre a execução de trabalhos do AWS Glue. Para obter detalhes, consulte Monitoramento com insights de execuções de trabalho do AWS Glue. Por padrão, o valor está definido como true e os insights da execução de trabalhos estão habilitados.

Essa opção só está disponível no AWS Glue versões 2.0 e 3.0.

--enable-metrics

Habilita a coleta de métricas para criar perfis de trabalhos para essa execução da tarefa. Estas métricas estão disponíveis no console do AWS Glue e no console do Amazon CloudWatch. O valor desse parâmetro não é relevante. Para ativar esse recurso, você pode fornecer esse parâmetro com qualquer valor, mas true é recomendado para maior clareza. Para desabilitar esse recurso, remova esse parâmetro da configuração do seu trabalho.

--enable-observability-metrics

Permite que um conjunto de métricas de observabilidade gere insights sobre o que está acontecendo dentro de cada trabalho executado na página Monitoramento de execuções de trabalhos nos consoles do AWS Glue e do Amazon CloudWatch. Para habilitar esse recurso, defina o valor como true. Para desabilitar esse recurso, configure-o como false ou remova esse parâmetro da configuração do seu trabalho.

--enable-rename-algorithm-v2

Define a versão do algoritmo de renomeação do EMRFS como versão 2. Quando um trabalho do Spark usa o modo de substituição de partição dinâmica, existe a possibilidade de que uma partição duplicada seja criada. Por exemplo, você pode acabar com uma partição duplicada, como s3://bucket/table/location/p1=1/p1=1. Aqui, P1 é a partição que está sendo substituída. O algoritmo de renomeação versão 2 corrige esse problema.

Essa opção só está disponível no AWS Glue versão 1.0.

--enable-s3-parquet-optimized-committer

Habilita o committer otimizado para S3 do EMRFS a gravar dados Parquet no Amazon S3. É possível fornecer o par parâmetro/valor por meio do console do AWS Glue ao criar ou atualizar um trabalho do AWS Glue. Definir o valor como true habilitará o committer. Por padrão, o sinalizador é ativado no AWS Glue 3.0 e desativado no AWS Glue 2.0.

Para obter mais informações, consulte Usar o committer otimizado para EMRFS S3.

--enable-spark-ui

Quando definido como true, ativa o recurso para usar a interface do usuário do Spark para monitorar e depurar trabalhos de ETL do AWS Glue.

--executor-cores

Número de tarefas do Spark que podem ser executadas em paralelo. Essa opção é compatível com o AWS Glue 3.0+. O valor não deve exceder 2 vezes o número de vCPUs no tipo de operador, que é 8 no G.1X, 16 no G.2X, 32 no G.4X e 64 no G.8X. Você deve ter cuidado ao atualizar essa configuração, pois isso pode afetar a performance do trabalho, pois o aumento do paralelismo de tarefas gera pressão na memória e no disco, além aplicar o controle de utilização nos sistemas de origem e de destino (por exemplo: causaria mais conexões simultâneas no Amazon RDS).

--extra-files

Os caminhos do Amazon S3 para arquivos adicionais, como arquivos de configuração, que o AWS Glue copia para o diretório de trabalho do seu script no nó driver antes de executá-lo. Vários valores devem ser caminhos completos separados por uma vírgula (,). Somente arquivos individuais têm suporte, e não um caminho de diretório. Essa opção não é compatível com os tipos de trabalho do shell do Python.

--extra-jars

O Amazon S3 indica caminhos para arquivos adicionais que o AWS Glue copia para o driver e os executores. AWS O Glue também adiciona esses arquivos ao classpath Java antes de executar o script. Vários valores devem ser caminhos completos separados por uma vírgula (,). A extensão não precisa ser .jar

--extra-py-files

Os caminhos do Amazon S3 para módulos adicionais do Python que o AWS Glue inclui no caminho do Python no nó driver antes de executar seu script. Vários valores devem ser caminhos completos separados por uma vírgula (,). Somente arquivos individuais têm suporte, e não um caminho de diretório.

--job-bookmark-option

Controla o comportamento de um marcador de trabalho. Os seguintes valores de opção podem ser definidos.

Valor ‑‑job‑bookmark‑option Descrição
job-bookmark-enable Acompanhe os dados processados anteriormente. Quando um trabalho for executado, processe os novos dados desde o último ponto de verificação.
job-bookmark-disable Sempre processe o conjunto de dados completo. Você é responsável por gerenciar o resultado das execuções de trabalho anteriores.
job-bookmark-pause Processe dados incrementais desde a última execução bem-sucedida ou os dados no intervalo identificados pelas seguintes subopções, sem atualizar o estado do último marcador. Você é responsável por gerenciar o resultado das execuções de trabalho anteriores. As duas subopções são as seguintes:
  • job-bookmark-from <from-value> é o ID de execução que representa toda a entrada anterior que foi processada até a última execução bem-sucedida, incluindo o ID de execução especificado. A entrada correspondente é ignorada.

  • job-bookmark-to <to-value> é o ID de execução que representa toda a entrada anterior que foi processada até a última execução bem-sucedida, incluindo o ID de execução especificado. A entrada correspondente, exceto a entrada identificada pelo <from-value>, é processada pelo trabalho. Qualquer entrada depois dessa entrada também é excluída do processamento.

O estado do marcador de trabalho não será atualizado quando esse conjunto de opções for especificado.

As subopções são opcionais. No entanto, quando usadas, ambas as subopções devem ser fornecidas.

Para ativar um marcador de trabalho, por exemplo, transmita o seguinte argumento.

'--job-bookmark-option': 'job-bookmark-enable'
--job-language

A linguagem de programação de script. Esse valor deve ser scala ou python. Se esse parâmetro não estiver presente, o padrão será python.

--python-modules-installer-option

Uma string de texto não criptografado que define as opções a serem passadas para o pip3 ao instalar módulos com --additional-python-modules. Forneça opções como você faria na linha de comando, separadas por espaços e prefixadas por traços. Para obter mais informações sobre o uso, consulte Instalar módulos Python adicionais com pip no AWS Glue 2.0.

nota

Essa opção não é compatível com trabalhos do AWS Glue quando você usa o Python 3.9.

--scriptLocation

O local do Amazon Simple Storage Service (Amazon S3) no qual seu script de ETL está localizado (no formato s3://path/to/my/script.py). Esse parâmetro substitui um local de script definido no objeto JobCommand.

--spark-event-logs-path

Especifica um caminho do Amazon S3. Ao usar o recurso de monitoramento da interface do usuário do Spark,o AWS Glue libera os logs de eventos do Spark para esse caminho do Amazon S3 a cada 30 segundos para um bucket que pode ser usado como um diretório temporário para armazenar eventos de interface do usuário do Spark.

--TempDir

Especifica um caminho do Amazon S3 para um bucket que pode ser usado como um diretório temporário para o trabalho.

Por exemplo, para definir um diretório temporário, transmita o seguinte argumento.

'--TempDir': 's3-path-to-directory'
nota

O AWS Glue cria um bucket temporário para os 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.

--use-postgres-driver

Ao definir esse valor como true, ele prioriza o driver JDBC do Postgres no classpath para evitar um conflito com o driver JDBC do Amazon Redshift. Essa opção só está disponível no AWS Glue versão 2.0.

--user-jars-first

Ao definir esse valor como true, ele prioriza os arquivos JAR extras do classpath. Essa opção só está disponível no AWS Glue versão 2.0 ou posterior.

--conf

Controla os parâmetros de configuração do Spark. Destina-se a casos de uso avançados.

--encryption-type

Parâmetro legado. O comportamento correspondente deve ser configurado usando configurações de segurança. Para obter mais informações sobre configurações de segurança, consulte Criptografar dados gravados pelo AWS Glue.

O AWS Glue usa os seguintes argumentos internamente e você nunca deve usá-los:

  • --debug: interno do AWS Glue. Não o defina.

  • --mode: interno do AWS Glue. Não o defina.

  • --JOB_NAME: interno do AWS Glue. Não o defina.

  • --endpoint: interno do AWS Glue. Não o defina.

O AWS Glue é compatível com a inicialização de um ambiente com o módulo site do Python usando sitecustomize para realizar personalizações específicas do site. A inicialização de suas próprias funções de inicialização só é recomendada para casos de uso avançados e é compatível na medida do possível com o AWS Glue 4.0.

O prefixo variável de ambiente, GLUE_CUSTOMER, é reservado para uso do cliente.