Ejecución de trabajos de ETL de Spark con tiempos de inicio reducidos - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecución de trabajos de ETL de Spark con tiempos de inicio reducidos

La versión 2.0 de AWS Glue y posteriores proporcionan una infraestructura mejorada para ejecutar los trabajos de Apache Spark del servicio ETL (extracción, transformación y carga) en AWS Glue con tiempos de inicio reducidos. Con los tiempos de espera reducidos, los ingenieros de datos pueden ser más productivos y aumentar su interactividad con AWS Glue. La reducción de la variación en los tiempos de inicio de los trabajos puede ayudarlo a cumplir o superar los acuerdos de nivel de servicio respecto de la disponibilidad de datos para análisis.

Para utilizar esta característica con los trabajos de ETL de AWS Glue, elija 2.0 o una versión posterior para la Glue version cuando cree sus trabajos.

Características nuevas admitidas

En esta sección, se describen las nuevas características compatibles con las versiones 2.0 de AWS Glue y posteriores.

Compatibilidad con especificación de módulos de Python adicionales al nivel de trabajo

La versión 2.0 de AWS Glue y posteriores también permiten proporcionar módulos de Python adicionales o versiones diferentes al nivel de trabajo. Puede utilizar la opción --additional-python-modules con una lista de módulos Python separados por comas para agregar un nuevo módulo o cambiar la versión de un módulo existente.

Por ejemplo, para actualizar o agregar un nuevo módulo scikit-learn utilice la siguiente clave/valor: "--additional-python-modules", "scikit-learn==0.21.3".

Además, dentro de la opción --additional-python-modules, puede especificar una ruta de Amazon S3 a un módulo de wheel de Python. Por ejemplo:

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

AWS Glue utiliza el instalador de paquetes de Python (pip3) para instalar los módulos adicionales. Puede transferir opciones adicionales especificadas por python-modules-installer-option a pip3 para instalar los módulos. Será de aplicación cualquier incompatibilidad o limitación de pip3.

Módulos de Python ya proporcionados en AWS Glue versión 2.0

AWS Glue, versión 2.0 soporta los siguientes módulos de Python listos para su uso:

  • 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

  • s3transfer—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

  • s3f—0.4.0

  • Cython—0.29.15

  • joblib—0.14.1

  • pmdarima—1.5.3

  • scikit-learn—0.22.1

  • tbat—1.0.9

Comportamiento de registro

La versión 2.0 de AWS Glue y posteriores admiten diferentes comportamientos de registro predeterminados. Las diferencias incluyen:

  • El registro se produce en tiempo real.

  • Hay flujos separados para controladores y ejecutores.

  • Para cada controlador y ejecutor hay dos flujos, el flujo de salida y el flujo de error.

Flujos de controladores y ejecutores

El ID de ejecución del trabajo identifica los flujos de controladores. Los flujos del ejecutor se identifican mediante el <run id>_<executor task id> del trabajo. Por ejemplo:

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

Flujos de salida y errores

El flujo de salida tiene la salida estándar (stdout) de su código. El flujo de error tiene mensajes de registro de su código/biblioteca.

  • Flujos de registro:

    • Los flujos de registro de controladores tienen <jr>, donde <jr> es el ID de la ejecución de trabajo.

    • Los flujos de registro del ejecutor tienen <jr>_<g>, donde <g> es el ID de tarea del ejecutor. Puede buscar el ID de tarea del ejecutor en el registro de errores del controlador.

Los grupos de registros predeterminados para AWS Glue, versión 2.0, son los siguientes:

  • /aws-glue/jobs/logs/output para la salida

  • /aws-glue/jobs/logs/error para los errores

Cuando se proporciona una configuración de seguridad, los nombres de los grupos de registro cambian a:

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

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

En la consola, el enlace Logs (Registros) vincula al grupo de registro de salida y el enlace Error vincula al grupo de registros de errores. Cuando se habilita el registro continuo, el enlace Logs (Registros) vincula al grupo de registros continuos, y el enlace Output (Salida) vincula al grupo de registro de salida.

Reglas de registro

nota

El nombre de grupo de registro predeterminado para el registro continuo es /aws-glue/jobs/logs-v2.

En las versiones 2.0 de AWS Glue y posteriores, el registro continuo tiene el mismo comportamiento que en la versión 1.0 de AWS Glue:

  • Grupo de registros predeterminado: /aws-glue/jobs/logs-v2

  • Flujo de registro del controlador: <jr>-driver

  • Flujo de registro del ejecutor: <jr>-<executor ID>

    Se puede cambiar el nombre del grupo de registros si configura --continuous-log-logGroupName

    El nombre de los flujos de registro puede tener un prefijo si configura --continous-log-logStreamPrefix

Características no admitidas

Las siguientes características de AWS Glue no son compatibles:

  • Puntos de enlace de desarrollo

  • Las versiones 2.0 de AWS Glue y posteriores no se ejecutan en Apache YARN, por lo que la configuración de YARN no se aplica

  • Las versiones 2.0 de AWS Glue y posteriores no tienen Hadoop Distributed File System (HDFS)

  • AWS GlueLas versiones 2.0 de y posteriores no utilizan asignación dinámica, por lo tanto, las ExecutorAllocationManager métricas no están disponibles

  • Para trabajos de versiones 2.0 de AWS Glue y posteriores, se debe especificar el número de empleados y el tipo de empleado, pero no la maxCapacity.

  • Las versiones 2.0 de AWS Glue y posteriores no son compatibles con s3n sin configurar. Se recomienda utilizar s3 o s3a. Si los trabajos requieren el uso de s3n por cualquier motivo, puede transferir el siguiente argumento adicional:

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