Executar trabalhos de ETL do Spark com tempos de inicialização reduzidos - AWS Glue

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

Executar trabalhos de ETL do Spark com tempos de inicialização reduzidos

O AWS Glue versão 2.0 ou posterior fornece uma infraestrutura atualizada para executar trabalhos de ETL (extração, transformação e carregamento) do Apache Spark no AWS Glue com tempos de inicialização reduzidos. Com os tempos de espera reduzidos, os engenheiros de dados podem ser mais produtivos e aumentar sua interatividade com o AWS Glue. A variação reduzida nos horários de início do trabalho pode ajudar a atender ou exceder seus SLAs de disponibilização de dados para análise.

Para usar esse recurso com seus trabalhos de ETL do AWS Glue, escolha a versão 2.0 ou posterior para Glue version ao criar seus trabalhos.

Novos recursos compatíveis

Esta seção descreve os novos recursos com suporte pelo AWS Glue versão 2.0 e posteriores.

Compatível com especificação de módulos do Python adicionais no nível do trabalho

O AWS Glue versão 2.0 e posteriores também permite que você forneça módulos do Python adicionais ou versões diferentes no nível do trabalho. Você pode usar a opção --additional-python-modules com uma lista de módulos do Python separados por vírgulas para adicionar um novo módulo ou alterar a versão de um existente.

Por exemplo, para atualizar ou adicionar um novo módulo scikit-learn, use a seguinte chave-valor: "--additional-python-modules", "scikit-learn==0.21.3".

Além disso, dentro da opção --additional-python-modules, você pode especificar um caminho do Amazon S3 para um módulo wheel do Python. Por exemplo:

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

O AWS Glue usa o Python Package Installer (pip3) para instalar os módulos adicionais. Você pode passar opções adicionais especificadas pelo python-modules-installer-option para o pip3, para instalar os módulos. Qualquer incompatibilidade ou limitação do pip3 será aplicada.

Módulos do Python já fornecidos no AWS Glue versão 2.0

O AWS Glue versão 2.0 já vem com suporte aos seguintes módulos do Python:

  • setuptools—45.2.0

  • subprocess32—3.5.4

  • ptvsd—4.3.2

  • pydevd—1.9.0

  • PyMySQL—0.9.3

  • docutils—0.15.2

  • jmespath—0.9.4

  • six—1.14.0

  • python_dateutil—2.8.1

  • urllib3—1.25.8

  • botocore—1.15.4

  • s3transferi—0.3.3

  • boto3—1.12.4

  • certifi—2019.11.28

  • chardet—3.0.4

  • idna—2.9

  • requests—2.23.0

  • pyparsing—2.4.6

  • enum34—1.1.9

  • pytz—2019.3

  • numpy—1.18.1

  • cycler—0.10.0

  • kiwisolver—1.1.0

  • scipy—1.4.1

  • pandas—1.0.1

  • pyarrow—0.16.0

  • matplotlib—3.1.3

  • pyhocon—0.3.54

  • mpmath—1.1.0

  • sympy—1.5.1

  • patsy—0.5.1

  • statsmodels—0.11.1

  • fsspec—0.6.2

  • s3fs—0.4.0

  • Cython—0.29.15

  • joblib—0.14.1

  • pmdarima—1.5.3

  • scikit-learn—0.22.1

  • tbats—1.0.9

Comportamento de registro em log

O AWS Glue versão 2.0 e posteriores oferece suporte a um comportamento de registro em log padrão diferente. As diferenças incluem:

  • O registro ocorre em tempo real.

  • Existem transmissões separadas para drivers e executores.

  • Para cada driver e executor, existem duas transmissões: a de saída e a de erro.

Fluxos de driver e executor

As transmissões de driver são identificadas pelo ID de execução do trabalho. As transmissões de executor são identificadas pelo trabalho <id de execução>_<id da tarefa do executor>. Por exemplo:

  • "logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."

Fluxos de saída e de erros

A transmissão de saída tem a saída padrão (stdout) do seu código. A transmissão de erros tem mensagens de registro em log do seu código/biblioteca.

  • Transmissões de log:

    • As transmissões de log de driver têm <jr>, em que <jr> é o ID da execução do trabalho.

    • As transmissões de log de executor têm <jr>_<g>, em que <g> é o ID da tarefa para o executor. Você pode procurar o ID da tarefa do executor no log de erros do driver.

Os grupos de logs padrão para o AWS Glue versão 2.0 são os seguintes:

  • /aws-glue/jobs/logs/output para a saída

  • /aws-glue/jobs/logs/error para erros

Quando uma configuração de segurança é fornecida, os nomes de grupos de logs mudam para:

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/output

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/error

No console, o link Logs aponta para o grupo de logs de saída e o link Error (Erro) aponta para o grupo de logs de erros. Quando o registro em log contínuo está habilitado, os links Logs apontam para o grupo de logs contínuo e o link Output (Saída) aponta para o grupo de logs de saída.

Regras de registro em log

nota

O nome do grupo de logs padrão para registro em log contínuo é /aws-glue/jobs/logs-v2.

No AWS Glue versão 2.0 e posteriores, o registro em log contínuo tem o mesmo comportamento que no AWS Glue versão 1.0:

  • Grupo de logs padrão: /aws-glue/jobs/logs-v2

  • Transmissão de log do driver: <jr>-driver

  • Transmissão de log do executor: <jr>-<ID do executor>

    O nome do grupo de logs pode ser alterado ao definir --continuous-log-logGroupName

    O nome das transmissões de log pode ser prefixado definindo --continous-log-logStreamPrefix

Recursos não compatíveis

Os seguintes recursos do AWS Glue não são suportados:

  • Endpoints de desenvolvimento

  • O AWS Glue versão 2.0 e posteriores não é executado no Apache YARN, portanto, as configurações do YARN não se aplicam

  • O AWS Glue versão 2.0 e posteriores não tem um Hadoop Distributed File System (HDFS)

  • O AWS Glue versão 2.0 e posteriores não usa alocação dinâmica, portanto, as métricas ExecutorAllocationManager não estão disponíveis

  • Para trabalhos do AWS Glue versão 2.0 e posteriores, especifique o número de operadores e o tipo de operador, mas não especifique uma maxCapacity.

  • O AWS Glue versão 2.0 e posteriores não suporta s3n fora da caixa. Recomendamos usar s3 ou s3a. Se os trabalhos precisarem usar s3n por qualquer motivo, você poderá usar o seguinte argumento adicional:

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem