Uso de los parámetros de trabajo en los trabajos de AWS Glue - AWS Glue

Uso de los parámetros de trabajo en los trabajos de AWS Glue

Al crear un trabajo de Glue AWS, establece algunos campos estándar, como Role yWorkerType. Puede proporcionar información de configuración adicional a través de los campos Argument (Parámetros del trabajo en la consola). En estos campos, puede proporcionar los trabajos de Glue AWS con los argumentos (parámetros) que se enumeran en este tema. Para obtener más información acerca de la API de trabajo de Glue AWS, consulte Jobs.

Configuración de los parámetros del trabajo

Puede configurar un trabajo a través de la consola, en la pestaña Job details (Detalles del trabajo), en el encabezado Job Parameters (Parámetro del trabajo). Para configurar un trabajo a través de AWS CLI, establezca DefaultArguments o NonOverridableArguments en un trabajo, o Arguments en la ejecución de un trabajo. Los argumentos establecidos en el trabajo se pasarán cada vez que se ejecute el trabajo, mientras que los argumentos establecidos en la ejecución del trabajo solo se pasarán para esa ejecución individual.

Por ejemplo, a continuación se muestra la sintaxis para ejecutar un trabajo con --arguments para configurar un parámetro de trabajo.

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

Acceder a los parámetros del trabajo

Al escribir scripts de Glue AWS, es posible que desee acceder a los valores de los parámetros del trabajo para modificar el comportamiento de su propio código. Proporcionamos métodos auxiliares para hacerlo en nuestras bibliotecas. Estos métodos resuelven los valores de los parámetros de ejecución del trabajo que anulan los valores de los parámetros del trabajo. Al resolver los parámetros establecidos en varios lugares, el trabajo NonOverridableArguments anulará el trabajo ejecutado Arguments, que anulará el trabajo DefaultArguments.

En Python:

En los trabajos de Python, proporcionamos una función llamada getResolvedParameters. Para obtener más información, consulte Acceso a los parámetros mediante getResolvedOptions. Los parámetros del trabajo están disponibles en la variable sys.argv.

En Scala:

En los trabajos de Scala, proporcionamos un objeto llamado GlueArgParser. Para obtener más información, consulte API GlueArgParser Scala de AWS Glue. Los parámetros del trabajo están disponibles en la variable sysArgs.

Referencia de parámetros de trabajo

AWS Glue reconoce los siguientes nombres de argumentos que se pueden utilizar para configurar el entorno de scripts para los trabajos y las ejecuciones de trabajos:

--additional-python-modules

Lista delimitada por comas que representa un conjunto de paquetes de Python que se deben instalar. Puede instalar los paquetes desde PyPI o proporcionar una distribución personalizada. Una entrada de paquete de PyPI tendrá el formato package==version, con el nombre y la versión del paquete de destino de PyPI. Una entrada de distribución personalizada es la ruta de S3 a la distribución.

Las entradas utilizan la coincidencia de versiones de Python para hacer coincidir el paquete y la versión. Eso significa que tendrá que usar dos signos igual: ==. Existen otros operadores de coincidencia de versiones; para obtener más información, consulte PEP 440.

Para pasar las opciones de instalación del módulo a pip3, utilice el parámetro --python-modules-installer-option.

--auto-scale-within-microbatch

El valor predeterminado es false. Este parámetro solo se puede usar para los trabajos de transmisión de Glue AWS, que procesan los datos de transmisión en una serie de microlotes y el escalado automático debe estar habilitado. Al establecer este valor en falso, calcula la media móvil exponencial de la duración del lote de los microlotes completados y lo compara con el tamaño de la ventana para determinar si se debe escalar verticalmente o reducir verticalmente el número de ejecutores. El escalado solo se produce cuando se completa un microlote. Al establecer este valor en verdadero, durante un microlote, escala verticalmente cuando el número de tareas de Spark permanece igual durante 30 segundos o cuando el procesamiento por lotes actual es superior al tamaño de la ventana. El número de ejecutores disminuirá si un ejecutor ha estado inactivo durante más de 60 segundos o si la media móvil exponencial de la duración del lote es baja.

--class

La clase de Scala que sirve de punto de entrada del script de Scala. Esto solo se aplica si --job-language está establecido en scala.

--continuous-log-conversionPattern

Especifica un patrón de registro de conversión personalizado para un trabajo habilitado para el registro continuo. El patrón de conversión solo se aplica a los registros de controlador y de ejecutor. No afecta la barra de progreso de AWS Glue.

--continuous-log-logGroup

Especifica el nombre de un grupo de registro personalizado de Amazon CloudWatch para un trabajo habilitado para el registro continuo.

--continuous-log-logStreamPrefix

Especifica el prefijo de un flujo de registro personalizado de CloudWatch para un trabajo habilitado para el registro continuo.

--customer-driver-env-vars y --customer-executor-env-vars

Estos parámetros establecen variables de entorno en sistemas operativos de manera respectiva para cada trabajador (controlador o ejecutor). Puede utilizar estos parámetros al crear plataformas o esquemas personalizados además de AWS Glue para permitir a los usuarios poder escribir por encima. Al activar estos dos marcadores, podrá establecer distintas variables de entorno para el controlador y para el ejecutor respectivamente sin tener que inyectar la misma lógica en el propio script del trabajo.

Ejemplo de uso

A continuación se muestra un ejemplo de la utilización de estos parámetros:

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

El establecimiento de estos en el argumento del trabajo equivale a la ejecución de los siguientes comandos:

En el controlador:

  • exportar CUSTOMER_KEY1=VAL1

  • exportar CUSTOMER_KEY2="val2,val2 val2"

En el ejecutor:

  • exportar CUSTOMER_KEY3=VAL3

Luego, en el propio script de trabajo, se pueden recuperar las variables de entorno con os.environ.get("CUSTOMER_KEY1") o System.getenv("CUSTOMER_KEY1").

Sintaxis de uso obligatorio

Controle los siguientes estándares al definir las variables del entorno:

  • Cada clave debe contener el CUSTOMER_ prefix.

    Por ejemplo: para "CUSTOMER_KEY3=VAL3,KEY4=VAL4", se ignorará KEY4=VAL4 y no se establecerá.

  • Cada par de clave y valor debe estar delimitado por una coma simple.

    Por ejemplo: "CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4".

  • Si el valor contiene espacios o comas, debe encerrarse entre comillas.

    Por ejemplo: CUSTOMER_KEY2=\"val2,val2 val2\".

Esta sintaxis modela con precisión los estándares de configuración de las variables de entorno de bash.

--datalake-formats

Es compatible con la versión 3.0 y posteriores de AWS Glue.

Especifica el marco de lago de datos que se va a utilizar. AWS Glue agrega los archivos JAR necesarios para los marcos que especifique en classpath. Para obtener más información, consulte Uso de marcos de lagos de datos con trabajos de ETL de AWS Glue.

Puede especificar uno o varios de los siguientes valores, separados por una coma:

  • hudi

  • delta

  • iceberg

Por ejemplo, pase el siguiente argumento para especificar los tres marcos.

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

Deshabilita el proxy de servicio para permitir llamadas de servicio de AWS a Amazon S3, CloudWatch y AWS Glue originadas desde su script a través de la VPC. Para obtener más información, consulte Configuración de las llamadas de AWS para que pasen a través de su VPC. Para deshabilitar el proxy del servicio, defina el valor de este parámetro en true.

--enable-auto-scaling

Cuando este valor se configura en true, se activa el escalado automático y la facturación por proceso de trabajo.

--enable-continuous-cloudwatch-log

Permite un registro continuo en tiempo real de los trabajos de AWS Glue. Puede ver los registros de trabajos de Apache Spark en tiempo real en CloudWatch.

--enable-continuous-log-filter

Especifica un filtro estándar (true) o ningún filtro (false) al crear o editar un trabajo habilitado para el registro continuo. Si se elige Standard filter (Filtro estándar), se filtran los mensajes de registro de estado de Apache Hadoop YARN y de controlador/ejecutor de Apache Hadoop YARN no útiles. Si se elige sin filtro, se verán todos los mensajes de registro.

--enable-glue-datacatalog

Permite utilizar el Catálogo de datos de AWS Glue como metaalmacén de Apache Spark Hive. Para habilitar esta característica, establezca el valor como true.

--enable-job-insights

Permite la supervisión adicional del análisis de errores con la información de ejecución de trabajos de AWS Glue. Para obtener más información, consulte Supervisión con Información de ejecuciones de trabajos de AWS Glue. De forma predeterminada, el valor se establece en true y la información de ejecución de trabajos está habilitada.

Esta opción está disponible para AWS Glule versión 2.0 y 3.0.

--enable--lakeformation-fine-grained-access

Permite un control de acceso pormenorizado para trabajos con AWS Glue. Para obtener más información, consulte Uso de AWS Glue con AWS Lake Formation para obtener un control de acceso detallado.

--enable-metrics

Permite recopilar métricas para generar perfiles de trabajo en la ejecución de este trabajo. Estas métricas se encuentran disponibles en la consola de AWS Glue y en la consola de Amazon CloudWatch. El valor de este parámetro no es relevante. Para activar esta característica, puede proporcionar a este parámetro cualquier valor, pero se recomienda true para mayor claridad. Para deshabilitar esta característica, elimine este parámetro de la configuración de su trabajo.

--enable-observability-metrics

Permite un conjunto de métricas de observabilidad para generar información sobre lo que sucede dentro de cada trabajo que se ejecuta en la página Job Runs Monitoring en la consola AWS Glue y la consola Amazon CloudWatch. Para habilitar esta característica, establezca el valor como true (verdadero). Para deshabilitar esta característica, defínala en false o elimine este parámetro de la configuración de su trabajo.

--enable-rename-algorithm-v2

Establece la versión del algoritmo de cambio de nombre de EMRFS a la versión 2. Cuando un trabajo de Spark utiliza el modo de sobrescritura de partición dinámica, existe la posibilidad de que se cree una partición duplicada. Por ejemplo, puede tener como resultado una partición duplicada como s3://bucket/table/location/p1=1/p1=1. Aquí, P1 es la partición que se está sobrescribiendo. El algoritmo de cambio de nombre versión 2 corrige este problema.

La opción solo está disponible en la versión 1.0 de AWS Glue.

--enable-s3-parquet-optimized-committer

Habilita el confirmador optimizado para S3 de EMRFS de forma que puedan escribirse datos de Parquet en Amazon S3. Puede suministrar el par parámetro/valor a través de la consola de AWS Glue cuando cree o actualice un trabajo de AWS Glue. Al establecer el valor en true, se habilita el confirmador. De forma predeterminada, la marca está activada en AWS Glue 3.0 y desactivada en AWS Glue 2.0.

Para obtener más información, consulte este artículo sobre el uso del confirmador optimizado para S3 de EMRFS.

--enable-spark-ui

Cuando se establece en true, activa la característica para usar la interfaz de usuario de Spark para monitorear y depurar trabajos de ETL de AWS Glue.

--executor-cores

Número de tareas de Spark que se pueden ejecutar en paralelo. Esta opción es compatible con Glue 3.0+ AWS. El valor no debe superar el doble de la cantidad de vCPU en el tipo de trabajador, es decir, 8 en G.1X, 16 en G.2X, 32 en G.4X y 64 en G.8X. Debe tener cuidado al actualizar esta configuración, ya que podría afectar al rendimiento laboral porque el aumento del paralelismo entre las tareas provoca presión en la memoria y el disco y podría limitar los sistemas de origen y destino (por ejemplo, provocaría más conexiones simultáneas en Amazon RDS).

--extra-files

Las rutas de Amazon S3 a archivos adicionales, por ejemplo, archivos de configuración que AWS Glue copia en el directorio de trabajo de su script en el nodo del controlador antes de ejecutarlo. Varios valores deben ser rutas completas separadas por una coma (,). Solo se admiten archivos individuales, no una ruta de directorio. Esta opción no es compatible con los tipos de trabajo de intérprete de comandos de Python.

--extra-jars

Amazon S3 lleva a archivos adicionales que AWS Glue copia al controlador y a los ejecutores. AWS Glue también añade estos archivos a la ruta de clases de Java antes de ejecutar el script. Varios valores deben ser rutas completas separadas por una coma (,). No es necesario que la extensión sea .jar

--extra-py-files

Las rutas de Amazon S3 a módulos de Python adicionales que AWS Glule agrega a la ruta de Python en el nodo del controlador antes de ejecutar el script. Varios valores deben ser rutas completas separadas por una coma (,). Solo se admiten archivos individuales, no una ruta de directorio.

--job-bookmark-option

Controla el comportamiento de un marcador de trabajo. Se pueden establecer los siguientes valores de opciones.

‑‑job‑bookmark‑option Valor Descripción
job-bookmark-enable Realizar un seguimiento de los datos procesados anteriormente. Cuando se ejecuta un flujo de trabajo, procesar los datos nuevos desde el último punto de comprobación.
job-bookmark-disable Procesar siempre todo el conjunto de datos. Usted es responsable de administrar el resultado de las ejecuciones de trabajos anteriores.
job-bookmark-pause Procesar los datos incrementales desde la última ejecución correcta o los datos en el rango identificado por las siguientes subopciones, sin actualizar el estado del último marcador. Usted es responsable de administrar el resultado de las ejecuciones de trabajos anteriores. Las dos subopciones son las siguientes:
  • job-bookmark-from <from-value> es el ID de ejecución que representa todas las entradas que se han procesado hasta la última ejecución correcta antes de la misma e incluye el ID de ejecución especificado. La entrada correspondiente se ignora.

  • job-bookmark-to <to-value> es el ID de ejecución que representa todas las entradas que se han procesado hasta la última ejecución correcta antes de la misma e incluye el ID de ejecución especificado. El trabajo procesa la entrada correspondiente, excluida la entrada identificada por <from-value>. Cualquier entrada posterior a esta entrada también se excluye para el procesamiento.

El estado del marcador de trabajo no se actualiza cuando se especifica este conjunto de opciones.

Las subopciones son opcionales. Sin embargo, cuando se utilizan, deben proporcionarse ambas subopciones.

Por ejemplo, para habilitar un marcador de trabajo, transfiera el argumento siguiente.

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

El lenguaje de programación del script. Este valor debe ser scala o python. Si no está presente este parámetro, el valor predeterminado es python.

--python-modules-installer-option

Una cadena de texto simple que define las opciones que se van a pasar a pip3 al instalar módulos con --additional-python-modules. Proporcione opciones como lo haría en la línea de comandos, separadas por espacios y prefijadas por guiones. Para obtener más información acerca del uso de una VPC, consulte Instalación de módulos adicionales de Python en AWS Glue 2.0 (o posterior) con pip.

nota

Esta opción no es compatible con los trabajos de AWS Glue cuando se utiliza Python 3.9.

--scriptLocation

La ubicación de Amazon Simple Storage Service (Amazon S3) donde se encuentra su script de ETL (en formato s3://path/to/my/script.py). Este parámetro invalida una ubicación del script establecida en el objeto JobCommand.

--spark-event-logs-path

Especifica una ruta de Amazon S3. Al utilizar la función de monitoreo de la interfaz de usuario de Spark, AWS Glue vacía los registros de eventos de Spark a esta ruta de Amazon S3 cada 30 segundos, en un bucket que se puede usar como directorio temporal para almacenar eventos de la interfaz de usuario de Spark.

--TempDir

Especifica una ruta de Amazon S3 a un bucket que se puede utilizar como directorio temporal para el trabajo.

Por ejemplo, para establecer un directorio temporal, transfiera el argumento siguiente.

'--TempDir': 's3-path-to-directory'
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 bloqueo del acceso público o eliminar el bucket más tarde, después de que se hayan completado todos los trabajos de esa región.

--use-postgres-driver

Al establecer este valor en true, se prioriza el controlador JDBC de Postgre en la ruta de clases para evitar un conflicto con el controlador JDBC de Amazon Redshift. La opción solo está disponible en la versión 2.0 de AWS Glue.

--user-jars-first

Al establecer este valor en true, se priorizan los archivos JAR adicionales del cliente en el classpath. Esta opción solo se encuentra disponible en AWS Glue versión 2.0 o posterior.

--conf

Controla los parámetros de configuración de Spark. Es para casos de uso avanzados.

--encryption-type

Parámetro heredado. El comportamiento correspondiente debe configurarse mediante configuraciones de seguridad. Para obtener más información sobre las configuraciones de seguridad, consulte Cifrado de datos escritos por AWS Glue.

AWS Glue usa los siguientes argumentos a nivel interno y el usuario nunca debe usarlos:

  • --debug: interno de AWS Glue. No lo establezca.

  • --mode: interno de AWS Glue. No lo establezca.

  • --JOB_NAME: interno de AWS Glue. No lo establezca.

  • --endpoint: interno de AWS Glue. No lo establezca.

AWS Glue admite el inicio de un entorno con el módulo site de Python que utiliza sitecustomize para realizar personalizaciones específicas del sitio. Se recomienda iniciar sus propias funciones de inicialización únicamente para casos de uso avanzados y, si se hace todo lo posible, se admite en la versión 4.0 de AWS Glue.

El prefijo de la variable de entorno, GLUE_CUSTOMER, está reservado para el uso de los clientes.