Adición de trabajos en AWS Glue - AWS Glue

Adición de trabajos en AWS Glue

Un trabajo de AWS Glue encapsula un script que se conecta a los datos de origen, los procesa y, a continuación, los escribe en el destino de datos. Normalmente, un trabajo ejecuta scripts de extracción, transformación y carga (ETL). Los trabajos también pueden ejecutar scripts de Python de uso general (trabajos de shell de Python). Los desencadenadores de AWS Glue pueden iniciar trabajos en función de un programa o evento, o bajo demanda. Puede monitorear las ejecuciones de trabajos para comprender las métricas de tiempo de ejecución como el estado de realización, la duración y la hora de inicio.

Puede utilizar los scripts que genera AWS Glue o puede utilizar sus propios scripts. Si cuento con un esquema de origen y una ubicación o esquema de destino determinados, el generador de código de AWS Glue puede crear automáticamente un script de API de Apache Spark (PySpark). Puede utilizar este script como base y editarlo para satisfacer sus objetivos.

AWS Glue puede escribir archivos de salida en varios formatos de datos, como JSON, CSV, ORC (Almacenamiento de filas en columnas optimizado), Apache Parquet y Apache Avro. En algunos formatos de datos, se pueden escribir formatos de compresión comunes.

Hay tres tipos de trabajos en AWS Glue: Spark, ETL de streaming y shell de Python.

  • Un trabajo de Spark se ejecuta en un entorno Apache Spark administrado por AWS Glue. Procesa los datos en lotes.

  • Un trabajo ETL de streaming es similar a un trabajo de Spark, excepto que realiza ETL en las transmisiones de datos. Utiliza el marco Apache Spark Structured Streaming. Algunas características de trabajo de Spark no están disponibles para los trabajos ETL de streaming.

  • Un trabajo de shell de Phyton ejecuta scripts de Python como un shell y soporta una versión de Python según la versión de AWS Glue que esté utilizando. Estos trabajos pueden utilizarse para programar y ejecutar tareas que no requieren un entorno de Apache Spark.

Definición de propiedades de trabajo para trabajos de Spark

Cuando define su trabajo en la consola de AWS Glue, proporciona valores de propiedades para controlar el entorno en tiempo de ejecución de AWS Glue.

En la siguiente lista se describen las propiedades de un trabajo de Spark. Para ver las propiedades de un trabajo de shell de Python, consulte Definición de las propiedades de trabajos de shell de Python. Para obtener información sobre las propiedades de un trabajo ETL de streaming, consulte Definición de propiedades de trabajo para un trabajo ETL de streaming.

Las propiedades se muestran en el orden en que aparecen en el asistente Add job (Agregar trabajo) en la consola de AWS Glue.

Nombre

Proporciona una cadena UTF-8 con una longitud máxima de 255 caracteres

Rol de IAM

Especifique el rol de IAM que se utiliza para dar una autorización sobre los recursos que se utilizan para ejecutar el trabajo y obtener acceso a los almacenes de datos. Para obtener más información acerca de los permisos para ejecutar trabajos en AWS Glue, consulte Administración de permisos de acceso para los recursos de AWS Glue.

Tipo

Especifique el tipo de entorno de trabajo que se va a ejecutar:

versión de AWS Glue

La versión de AWS Glue determina las versiones de Apache Spark y Python que están disponibles para el trabajo, como se especifica en la tabla a continuación.

AWS Glue version Versiones de Spark y Python admitidas
0.9
  • Spark 2.2.1

  • Python 2.7

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

2.0
  • Spark 2.4.3

  • Python 3.7

3.0
  • Spark 3.1.1

  • Python 3.7

Los trabajos que se crearon sin especificar una versión de AWS Glue se han establecido de forma predeterminada a AWS Glue 2.0.

Ejecuciones de este trabajo (script generado o personalizado)

El código del script de ETL define la lógica del trabajo. El script se puede codificar en Python o en Scala. Puede elegir si AWS Glue genera el script que el flujo de trabajo ejecuta o bien si usted mismo lo proporciona. Proporcione el nombre del script y la ubicación en Amazon Simple Storage Service (Amazon S3). Compruebe que no haya un archivo con el mismo nombre que el directorio de script en la ruta. Para obtener más información acerca de cómo usar scripts, consulte Edición de scripts en AWS Glue.

Nombre de la clase Scala

Si el script está codificado en Scala, debe proporcionar un nombre de clase. El nombre de clase predeterminado para scripts generados por AWS Glue es GlueApp.

Temporary directory (Directorio temporal)

Proporcione la ubicación de un directorio de trabajo en Amazon S3 donde los resultados intermedios temporales se escriben cuando AWS Glue ejecuta el script. Compruebe que no haya un archivo con el mismo nombre que el directorio temporal en la ruta. Este directorio se utiliza cuando AWS Glue lee y escribe en Amazon Redshift y mediante determinadas transformaciones de AWS Glue.

nota

AWS Glue crea un bucket temporal para los trabajos si aún no existe un bucket en la región. Este bucket podría permitir el acceso público. Puede modificar el bucket en Amazon S3 para establecer el bloque de acceso público o eliminar el bucket más tarde, después de que se hayan completado todos los trabajos de esa región.

nota

El origen y el destino no se encuentran en la pestaña Details (Detalles) de la consola para un trabajo. Revise el script para ver los detalles de origen y de destino.

Propiedades avanzadas
Job bookmark (Marcador de flujo de trabajo)

Especifique cómo AWS Glue procesará la información de estado cuando se ejecute el flujo de trabajo. Puede hacer que recuerde datos procesados previamente, actualice la información de estado o no tenga en cuenta dicha información. Para obtener más información, consulte Seguimiento de los datos procesados mediante marcadores de trabajo.

Opciones de monitoreo
Job metrics (Métricas de trabajo)

Active o desactive la creación de métricas de Amazon CloudWatch cuando se ejecute este trabajo. Para ver los datos de perfiles, debe habilitar esta opción. Para obtener más información acerca de cómo habilitar y visualizar métricas, consulte Monitoreo y depuración de trabajo.

Registro continuo

Active el registro continuo en Amazon CloudWatch. Si esta opción no está habilitada, los registros solo estarán disponibles después de que se complete el trabajo. Para obtener más información, consulte Registro continuo para trabajos de AWS Glue.

Interfaz de usuario de Spark

Habilite el uso de la interfaz de usuario (UI) de Spark para monitorear este trabajo. Para obtener más información, consulte Habilitación de la interfaz de usuario web de Apache Spark para trabajos AWS Glue.

Etiquetas

Etiquete su trabajo con una Clave de etiqueta y un Valor de etiqueta opcional. Una vez que se crean las claves de etiquetas, son de solo lectura. Utilice etiquetas en algunos recursos para que le resulte más fácil organizarlos e identificarlos. Para obtener más información, consulte AWS Etiquetas en AWS Glue.

Configuración de seguridad, bibliotecas de scripts y parámetros de trabajo
Configuración de seguridad

Elija una configuración de seguridad de la lista. Una configuración de seguridad especifica cómo se cifran los datos en el destino de Amazon S3: sin cifrado, cifrado del lado del servidor con claves administradas por AWS KMS (SSE-KMS) o claves de cifrado administradas por Amazon S3 (SSE-S3).

Cifrado en el servidor

Si selecciona esta opción, cuando el flujo de trabajo de ETL se escribe en Amazon S3, los datos se cifran en reposo mediante cifrado SSE-S3. Tanto el destino de datos de Amazon S3 como los datos que se escriben en un directorio temporal de Amazon S3 se cifran. Esta opción se pasa como parámetro de trabajo. Para obtener más información, consulte Protección de datos mediante el cifrado del lado del servidor con las claves de cifrado administradas por Amazon S3 (SSE-S3) en la Guía para desarrolladores de Amazon Simple Storage Service.

importante

Esta opción se pasa por alto si se especifica una configuración de seguridad.

Python library path (Ruta de la biblioteca Python), Dependent jars path (Ruta de archivos JAR dependientes) y Referenced files path (Ruta de los archivos a los que se hace referencia)

Especifique estas opciones si el script las requiere. Puede definir las rutas de Amazon S3 separadas por comas para estas opciones al definir el trabajo. Puede omitir estas rutas al ejecutar el flujo de trabajo. Para obtener más información, consulte Proporcionar sus propios scripts personalizados.

Worker type (Tipo de empleado)

Están disponibles los siguientes tipos de proceso de trabajo:

  • Standard: al elegir este tipo, también debe proporcionar un valor para Maximum capacity (Capacidad máxima). La capacidad máxima es el número de unidades de procesamiento de datos (DPU) de AWS Glue que se pueden asignar cuando se ejecuta este trabajo. Una DPU es una medida relativa de la potencia de procesamiento que consta de 4 vCPU de capacidad de computo y 16 GB de memoria. El tipo de proceso de trabajo Standard tiene un disco de 50 GB y dos ejecutores. Cada ejecutor se inicia con 4 núcleos de Spark, o un total de 8 núcleos de Spark.

  • G.1X: al elegir este tipo, también debe proporcionar un valor para Number of workers (Número de empleados). Cada empleado realiza un mapeo a 1 DPU y 1 ejecutor, que se inicia con 8 núcleos de Spark y 12 228 MiB (10 GiB) de memoria. Le recomendamos este tipo de proceso de trabajo para trabajos con un uso intensivo de la memoria. Esta es la opción predeterminada de Worker type (Tipo de empleado) para trabajos de AWS Glue versión 2.0 o posterior.

  • G.2X: al elegir este tipo, también debe proporcionar un valor para Number of workers (Número de empleados). Cada empleado realiza un mapeo a 2 DPU y 1 ejecutor, que se inicia con 16 núcleos de Spark y 24 576 MiB de memoria. Le recomendamos este tipo de proceso de trabajo para trabajos con un uso intensivo de la memoria y trabajos que ejecuten transformaciones ML.

Se le cobra una tarifa por hora en función de la cantidad de DPU que se utilizan para ejecutar sus trabajos ETL. Para obtener más información, consulte la Página de precios de AWS Glue.

Para trabajos de AWS Glue versión 1.0 o anterior, cuando configura un trabajo con la consola y especifica un Worker type (Tipo de empleado) de Standard (Estándar), se configura la Maximum capacity (Capacidad máxima) y el Number of workers (Número de empleados) se convierte en el valor de Máximum capacity (Capacidad máxima): 1. Si utiliza AWS Command Line Interface (AWS CLI) o AWS SDK, puede especificar el parámetro Max capacity (Capacidad máxima) o puede especificar tanto Worker type (Tipo de empleado) como Number of workers (Número de empleados).

Para trabajos de AWS Glue versión 2.0 o posterior, no puede especificar Maximum capacity (Capacidad máxima). En su lugar, debe especificar un Worker type (Tipo de empleado) y el Number of workers (Número de empleados). Para obtener más información, consulte Trabajos.

Number of workers (Número de procesos de trabajo)

Para los tipos de proceso de trabajo G.1X y G.2X, debe especificar el número de procesos de trabajo que se asigna cuando se ejecuta el trabajo.

El número máximo de procesos de trabajo que puede definir son 299 para G.1X y 149 para G.2X.

Maximum capacity (Capacidad máxima)

Para trabajos de AWS Glue, versión 1.0 o anteriores, con el tipo de empleado estándar, debe especificar el número máximo de unidades de procesamiento de datos (DPU) de AWS Glue que se pueden asignar cuando se ejecute este trabajo. Se le cobra una tarifa por hora en función de la cantidad de DPU que se utilizan para ejecutar sus trabajos ETL. Para obtener más información, consulte la Página de precios de AWS Glue.

Elija un número entero comprendido entre 2 y 100. El valor predeterminado es 10. Este tipo de trabajo no puede tener una asignación de DPU fraccionaria.

Para trabajos de AWS Glue versión 2.0 o posterior, no puede especificar Maximum capacity (Capacidad máxima). En su lugar, debe especificar un Worker type (Tipo de empleado) y el Number of workers (Número de empleados). Para obtener más información, consulte Trabajos.

Max concurrency (Simultaneidad máxima)

Establece el número máximo de ejecuciones simultáneas que están permitidas para este flujo de trabajo. El valor predeterminado es 1. Se produce un error cuando se llega a este umbral. El valor máximo que puede especificar se controla mediante un límite de servicio. Por ejemplo, si una ejecución anterior de un trabajo se sigue ejecutando cuando una nueva instancia se inicia, es posible que desee devolver un error al evitar dos instancias de la misma ejecución de trabajo de forma simultánea.

Job timeout (Tiempo de espera de flujo de trabajo)

Establece el tiempo de ejecución máximo en minutos. El valor predeterminado es 2880 minutos (48 horas) para los trabajos por lotes. Cuando el tiempo de ejecución de un trabajo supera este límite, el estado de ejecución de trabajo cambia a TIMEOUT.

Para los trabajos de streaming que se ejecutan indefinidamente, deje el valor en blanco, que es el valor predeterminado para los trabajos de streaming.

Umbral de notificación de retraso

Establece el umbral (en minutos) antes de que se envíe una notificación de retraso. Puede configurar este umbral para enviar notificaciones cuando una ejecución de flujo de trabajo RUNNING, STARTING o STOPPING dure más de un número previsto de minutos.

Number of retries (Número de reintentos)

Especifique el número de veces, entre 0 y 10, que AWS Glue debe reiniciar automáticamente el flujo de trabajo si se produce un error. Los trabajos que alcanzan el límite de tiempo de espera no se reinician.

Parámetros del flujo de trabajo

Conjunto de pares de clave-valor que se pasan como parámetros de nombres al script. Estos son valores predeterminados que se utilizan cuando se ejecuta el script, pero se pueden invalidar en desencadenadores o cuando se ejecuta el trabajo. Debe agregar el prefijo -- al nombre de clave; por ejemplo: --myKey. Los parámetros de trabajo se pasan como asignación cuando se utiliza la AWS Command Line Interface.

Para obtener ejemplos, consulte los parámetros de Python en Transferencia y acceso a los parámetros de Python en AWS Glue.

Parámetros de trabajo no invalidables

Conjunto de parámetros especiales de trabajo que no se pueden invalidar en desencadenadores o cuando se ejecuta el trabajo. Estos pares de clave-valor se pasan como parámetros de nombres al script. Estos valores se utilizan cuando se ejecuta el script y no se pueden invalidar en desencadenadores o cuando se ejecuta el trabajo. Debe agregar el prefijo -- al nombre de clave; por ejemplo: --myKey. getResolvedOptions() devuelve tanto parámetros de trabajo como parámetros de trabajo no invalidables en una sola asignación. Para obtener más información, consulte Acceso a los parámetros mediante getResolvedOptions.

Opciones del catálogo
Uso del catálogo de datos de AWS Glue como metaalmacén de Hive

Seleccione esta opción para usar el AWS Glue Data Catalog como metaalmacén de Hive. El rol de IAM que se utiliza para el trabajo debe tener el permiso glue:CreateDatabase. Si no existe una base de datos, se crea una denominada “default (predeterminada)” en el Data Catalog.

Origen de datos

Seleccione una tabla del Data Catalog.

Tipo de transformación

Elija una de las siguientes opciones:

Change schema (Cambiar esquema)

Agrega la transformación ApplyMapping al script generado. Permite cambiar el esquema de los datos de origen y crear un conjunto de datos de destino.

Find matching records (Buscar registros de coincidencia)

Permite elegir una transformación de machine learning que se utilizará para buscar registros coincidentes en los datos de origen.

Objetivo

Aplique alguna de las siguientes acciones:

  • Para especificar una ruta de Amazon S3 o almacén de datos de JDBC, elija Create tables in your data target (Crear tablas en el destino de los datos).

  • Para especificar una tabla de catálogo, elija Use tables in the data catalog and update your data target (Utilizar tablas en el catálogo de datos y actualizar el destino de los datos).

Para ubicaciones de destino de Amazon S3, proporcione la ubicación de un directorio donde se escribe la salida. Compruebe que no haya un archivo con el mismo nombre que el directorio de la ruta de destino en la ruta. Para destinos de JDBC, AWS Glue crea objetos de esquema según sea necesario si los objetos especificados no existen.

Para obtener información acerca de cómo añadir un flujo de trabajo con la consola de AWS Glue, consulte Trabajo con trabajos en la consola de AWS Glue.