Solución de errores de Spark
Si encuentra errores en AWS Glue, utilice la siguiente información como apoyo para encontrar el origen de los problemas y solucionarlos.
nota
El repositorio GitHub de AWS Glue contiene orientación adicional para solucionar problemas en la sección de preguntas frecuentes deAWS Glue
Temas
- Error: Resource unavailable (Recurso no disponible)
- Error: Could Not Find S3 Endpoint or NAT Gateway for subnetId in VPC (No se encontró el punto de conexión S3 o puerta de enlace NAT para subnetId en la VPC)
- Error: Inbound Rule in Security Group Required (La regla de entrada del grupo de seguridad es obligatoria)
- Error: Outbound Rule in Security Group Required (La regla de salida del grupo de seguridad es obligatoria)
- Error de trabajo porque el rol transferido debería tener premisos para asumir el rol para el servicio AWS Glue
- Error: DescribeVpcEndpoints action is unauthorized. unable to validate VPC ID vpc-id (La acción DescribeVPCEndpoints no está autorizada. No se puede validar el ID de VPC vpc-id)
- Error: DescribeRouteTables action is unauthorized. unable to validate subnet id: Subnet-id in VPC id: vpc-id (La acción DescribeRouteTables no está autorizada. No se puede validar el ID de subred: Subnet-id en el ID de VPC vpc-id)
- Error: Failed to call ec2:DescribeSubnets (Error al llamar a ec2:DescribeSubnets)
- Error: Failed to call ec2:DescribeSecurityGroups (Error al llamar a ec2:DescribeSecurityGroups)
- Error: Could Not Find Subnet for AZ (No se pudo encontrar la subred de AZ)
- Error: Job run exception when writing to a JDBC target (Excepción de ejecución de flujo de trabajo al escribir en un destino JDBC)
- Error: Amazon S3: The operation is not valid for the object's storage class
- Error: Amazon S3 timeout (Tiempo de espera de Amazon S3)
- Error: Amazon S3 access denied (Acceso denegado a Amazon S3)
- Error: Amazon S3 access key ID does not exist (El ID de clave de acceso de Amazon S3 no existe)
- Se produce un error en la ejecución de trabajo al obtener acceso a Amazon S3 con un URI de s3a://
- Error: Amazon S3 service token expired (Token de servicio de Amazon S3 caducado)
- Error: No private DNS for network interface found (No se encontró un DNS privado para la interfaz de red)
- Error: Development endpoint provisioning failed (Error en el aprovisionamiento del punto de conexión de desarrollo)
- Error: Notebook Server CREATE_FAILED (CREATE_FAILED el servidor del bloc de notas)
- Error: Local notebook fails to start (El bloc de notas local no se inicia)
- Error: Running crawler failed (Error de ejecución del rastreador)
- Error: Partitions were not updated (Las particiones no se han actualizado)
- Error: no se pudo actualizar el marcador de trabajo debido a que la versión no coincide
- Error: A job is reprocessing data when job bookmarks are enabled (Un trabajo está reprocesando datos cuando los marcadores de trabajo están habilitados)
- Error: comportamiento de conmutación por error entre VPC en AWS Glue
Error: Resource unavailable (Recurso no disponible)
Si AWS Glue devuelve un mensaje de recurso no disponible, los mensajes de error o los registros le serán útiles para obtener más información sobre el problema. Las siguientes tareas describen métodos generales para solucionar problemas.
-
Por cada conexión o punto de enlace de desarrollo que utilice, compruebe que el clúster no se haya quedado sin interfaces de red elásticas.
Error: Could Not Find S3 Endpoint or NAT Gateway for subnetId in VPC (No se encontró el punto de conexión S3 o puerta de enlace NAT para subnetId en la VPC)
Compruebe el ID de la subred y el ID de la VPC indicados en el mensaje como ayuda para diagnosticar el problema.
-
Compruebe que tenga un punto de conexión de VPC de Amazon S3 configurado, elemento obligatorio con AWS Glue. Además, compruebe la gateway de NAT si forma parte de su configuración. Para obtener más información, consulte Puntos de enlace de Amazon VPC para Amazon S3.
Error: Inbound Rule in Security Group Required (La regla de entrada del grupo de seguridad es obligatoria)
Al menos un grupo de seguridad debe abrir todos los puertos de entrada. Para limitar el tráfico, el grupo de seguridad de origen de su regla de entrada puede restringirse al mismo grupo de seguridad.
-
En todas las conexiones que utilice, compruebe que el grupo de seguridad tenga una regla de entrada con autorreferencia. Para obtener más información, consulte Configuración del acceso de red a los almacenes de datos.
-
Cuando utilice un punto de enlace de desarrollo, compruebe que su grupo de seguridad tenga una regla de entrada con autorreferencia. Para obtener más información, consulte Configuración del acceso de red a los almacenes de datos.
Error: Outbound Rule in Security Group Required (La regla de salida del grupo de seguridad es obligatoria)
Al menos un grupo de seguridad debe abrir todos los puertos de salida. Para limitar el tráfico, el grupo de seguridad de origen de su regla de salida puede restringirse al mismo grupo de seguridad.
-
En todas las conexiones que utilice, compruebe que el grupo de seguridad tenga una regla de salida que se haga referencia a sí misma. Para obtener más información, consulte Configuración del acceso de red a los almacenes de datos.
-
Cuando utilice un punto de enlace de desarrollo, compruebe que su grupo de seguridad tenga una regla de salida que se haga referencia a sí misma. Para obtener más información, consulte Configuración del acceso de red a los almacenes de datos.
Error de trabajo porque el rol transferido debería tener premisos para asumir el rol para el servicio AWS Glue
El usuario que define un flujo de trabajo debe tener permiso para iam:PassRole
para AWS Glue.
-
Cuando un usuario cree un flujo de trabajo de AWS Glue, compruebe que el rol de usuario contenga una política que tenga
iam:PassRole
para AWS Glue. Para obtener más información, consulte Paso 3: Adjuntar una política a los usuarios o los grupos que accedan a AWS Glue.
Error: DescribeVpcEndpoints action is unauthorized. unable to validate VPC ID vpc-id (La acción DescribeVPCEndpoints no está autorizada. No se puede validar el ID de VPC vpc-id)
-
Compruebe que la política que se haya pasado a AWS Glue contenga el permiso
ec2:DescribeVpcEndpoints
.
Error: DescribeRouteTables action is unauthorized. unable to validate subnet id: Subnet-id in VPC id: vpc-id (La acción DescribeRouteTables no está autorizada. No se puede validar el ID de subred: Subnet-id en el ID de VPC vpc-id)
-
Compruebe que la política que se haya pasado a AWS Glue contenga el permiso
ec2:DescribeRouteTables
.
Error: Failed to call ec2:DescribeSubnets (Error al llamar a ec2:DescribeSubnets)
-
Compruebe que la política que se haya pasado a AWS Glue contenga el permiso
ec2:DescribeSubnets
.
Error: Failed to call ec2:DescribeSecurityGroups (Error al llamar a ec2:DescribeSecurityGroups)
-
Compruebe que la política que se haya pasado a AWS Glue contenga el permiso
ec2:DescribeSecurityGroups
.
Error: Could Not Find Subnet for AZ (No se pudo encontrar la subred de AZ)
-
Puede que la zona de disponibilidad no esté disponible para AWS Glue. Cree y utilice una nueva subred en una zona de disponibilidad que no sea la que se ha especificado en el mensaje.
Error: Job run exception when writing to a JDBC target (Excepción de ejecución de flujo de trabajo al escribir en un destino JDBC)
Cuando ejecuta un flujo de trabajo que escribe en un destino JDBC, es posible que el flujo de trabajo presente errores en los siguientes casos:
-
Si su flujo de trabajo escribe en una tabla de Microsoft SQL Server y la tabla tiene definidas columnas de tipo
Boolean
, la tabla tiene que definirse previamente en la base de datos de SQL Server. Cuando defina el flujo de trabajo en la consola de AWS Glue utilizando un destino de SQL Server con la opción Create tables in your data target (Crear tablas en el destino de los datos), no mapee ninguna columna de origen con ninguna columna de destino que tenga un tipo de datosBoolean
. Es posible que se produzca un error cuando el flujo de trabajo se ejecute.Para evitar el error, ejecute la siguiente operación:
-
Elija una tabla existente con la columna Boolean (booleana).
-
Edite la transformación
ApplyMapping
y mapee la columna Boolean del origen con un número o una cadena del destino. -
Edite la transformación
ApplyMapping
para eliminar la columna Boolean del origen.
-
-
Si su flujo de trabajo escribe en una tabla de Oracle, es posible que deba ajustar la longitud de los nombres de los objetos de Oracle. En algunas versiones de Oracle, la longitud de identificador máxima está limitada a 30 o 128 bytes. Este límite afecta a los nombres de tablas y de columnas de los almacenes de datos de destino de Oracle.
Para evitar el error, ejecute la siguiente operación:
-
Dé un nombre a las tablas de destino de Oracle que esté dentro de los límites de su versión.
-
Los nombres de columna predeterminados se generan a partir de los nombres de campos de los datos. Para gestionar el error cuando los nombres de las columnas superan el límite establecido, utilice las transformaciones
ApplyMapping
oRenameField
para cambiar el nombre de la columna para que esté dentro del límite aceptado.
-
Error: Amazon S3: The operation is not valid for the object's storage class
Si AWS Glue arroja este error, puede que el trabajo de AWS Glue haya leído datos de las tablas con particiones en los niveles de clase de almacenamiento de Amazon S3.
-
Mediante el uso de exclusiones de clase de almacenamiento, puede asegurarse de que sus trabajos de AWS Glue funcionarán en tablas que tengan particiones en estas capas de clase de almacenamiento. Sin exclusiones, los trabajos que leen datos de estos niveles fallan con el siguiente error:
AmazonS3Exception: The operation is not valid for the object's storage class
.Para obtener más información, consulte Exclusión de clases de almacenamiento de Amazon S3.
Error: Amazon S3 timeout (Tiempo de espera de Amazon S3)
Si AWS Glue devuelve un error de tiempo de espera de conexión agotado, puede que se deba a que está intentando obtener acceso a un bucket de Amazon S3 ubicado en otra región de AWS.
-
Un punto de conexión de VPC de Amazon S3 solo puede dirigir el tráfico a los buckets que se encuentran dentro de una región de AWS. Si necesita conectarse a buckets de otras regiones, puede recurrir a una gateway de NAT para evitar este problema. Para obtener más información, consulte Puerta de enlace NAT.
Error: Amazon S3 access denied (Acceso denegado a Amazon S3)
Si AWS Glue devuelve un error de acceso denegado a un bucket u objeto de Amazon S3, puede deberse a que el rol de IAM proporcionado no tiene una política con permiso para el almacén de datos.
-
Un flujo de trabajo de ETL debe tener acceso al almacén de datos de Amazon S3 utilizado como origen o destino. Un rastreador debe tener acceso al almacén de datos de Amazon S3 que rastrea. Para obtener más información, consulte Paso 2: creación de un rol de IAM para AWS Glue.
Error: Amazon S3 access key ID does not exist (El ID de clave de acceso de Amazon S3 no existe)
Si AWS Glue devuelve un error de ID de clave de acceso no existe al ejecutar un flujo de trabajo, puede deberse a uno de los motivos siguientes:
-
Un trabajo de ETL utiliza un rol de IAM para obtener acceso a los almacenes de datos. Confirme que el rol de IAM de su trabajo no se haya eliminado antes de iniciar el trabajo.
-
Un rol de IAM contiene permisos para obtener acceso a sus almacenes de datos. Confirme que todas las políticas de Amazon S3 asociadas que contengan
s3:ListBucket
sean correctas.
Se produce un error en la ejecución de trabajo al obtener acceso a Amazon S3 con un URI de s3a://
Si un trabajo devuelve un error similar a Failed to parse XML document with handler class (No se pudo analizar documento XML con la clase de controlador), podría deberse a un error al intentar enumerar centenares de archivos mediante un URI s3a://
. Obtenga acceso a su almacén de datos mediante un URI s3://
en su lugar. En el siguiente seguimiento de excepciones se destacan los errores que se buscan:
1. com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler 2. at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:161) 3. at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseListBucketObjectsResponse(XmlResponsesSaxParser.java:317) 4. at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:70) 5. at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:59) 6. at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62) 7. at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:31) 8. at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70) 9. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1554) 10. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1272) 11. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) 12. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 13. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 14. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 15. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 16. at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 17. at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 18. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4325) 19. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4272) 20. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266) 21. at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:834) 22. at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:971) 23. at org.apache.hadoop.fs.s3a.S3AFileSystem.deleteUnnecessaryFakeDirectories(S3AFileSystem.java:1155) 24. at org.apache.hadoop.fs.s3a.S3AFileSystem.finishedWrite(S3AFileSystem.java:1144) 25. at org.apache.hadoop.fs.s3a.S3AOutputStream.close(S3AOutputStream.java:142) 26. at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:74) 27. at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:108) 28. at org.apache.parquet.hadoop.ParquetFileWriter.end(ParquetFileWriter.java:467) 29. at org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:117) 30. at org.apache.parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:112) 31. at org.apache.spark.sql.execution.datasources.parquet.ParquetOutputWriter.close(ParquetOutputWriter.scala:44) 32. at org.apache.spark.sql.execution.datasources.FileFormatWriter$SingleDirectoryWriteTask.releaseResources(FileFormatWriter.scala:252) 33. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:191) 34. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:188) 35. at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1341) 36. at org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:193) 37. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:129) 38. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:128) 39. at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 40. at org.apache.spark.scheduler.Task.run(Task.scala:99) 41. at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282) 42. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 43. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 44. at java.lang.Thread.run(Thread.java:748)
Error: Amazon S3 service token expired (Token de servicio de Amazon S3 caducado)
Al transferir datos hacia y desde Amazon Redshift, se utilizan las credenciales temporales de Amazon S3, que caducan después de 1 hora. Si tiene un trabajo de larga duración, se podría producir un error. Para obtener información acerca de cómo configurar sus trabajos de larga duración para mover datos hacia y desde Amazon Redshift, consulte aws-glue-programming-etl-connect-redshift-home.
Error: No private DNS for network interface found (No se encontró un DNS privado para la interfaz de red)
Si un flujo de trabajo genera un error o un punto de enlace de desarrollo no aprovisiona correctamente, podría ser debido a un problema en la configuración de la red.
-
Si utiliza el DNS suministrado por Amazon, el valor de
enableDnsHostnames
debe establecerse en true. Para obtener más información, consulte DNS.
Error: Development endpoint provisioning failed (Error en el aprovisionamiento del punto de conexión de desarrollo)
Si AWS Glue no aprovisiona correctamente un punto de enlace de desarrollo, podría ser debido a un problema en la configuración de la red.
-
Cuando defina un punto de enlace de desarrollo, la VPC, la subred y los grupos de seguridad se validan para confirmar que cumplan determinados requisitos.
-
Si ha proporcionado la clave pública SSH opcional, compruebe que esta sea una clave pública SSH válida.
-
Consulte en la consola de la VPC que su VPC utilice la opción DHCP option set (Conjunto de opciones de DHCP) válida. Para obtener más información, consulte Conjuntos de opciones de DHCP.
-
Si el clúster permanece en estado PROVISIONING (APROVISIONAMIENTO), póngase en contacto con AWS Support.
Error: Notebook Server CREATE_FAILED (CREATE_FAILED el servidor del bloc de notas)
Si AWS Glue no consigue crear el servidor del bloc de notas de un punto de enlace de desarrollo, podría ser debido a uno de los siguientes problemas:
-
AWS Glue transfiere un rol de IAM a Amazon EC2 cuando está configurando el bloc de notas del servidor. El rol de IAM debe tener una relación de confianza con Amazon EC2.
-
El rol de IAM debe tener un perfil de instancias con el mismo nombre. Cuando crea el rol para Amazon EC2 con la consola de IAM, se crea automáticamente el perfil de instancias con el mismo nombre. Compruebe si el registro contiene un error de nombre de perfil de instancias
iamInstanceProfile.name
no válido. Para obtener más información, consulte Utilización de perfiles de instancia. -
Compruebe que su rol tenga permiso para obtener acceso a buckets
aws-glue*
en la política que pasa para crear el servidor del bloc de notas.
Error: Local notebook fails to start (El bloc de notas local no se inicia)
Si el bloc de notas local no se inicia y notifica errores del tipo que un directorio o una carpeta no se pueden encontrar, podría ser debido a uno de los siguientes problemas:
-
Si usa Microsoft Windows, asegúrese de que la variable de entorno
JAVA_HOME
apunte al directorio de Java correcto. Es posible actualizar Java sin actualizar esta variable; si la variable apunta a una carpeta que ya no existe, los cuadernos de Jupyter no se iniciarán.
Error: Running crawler failed (Error de ejecución del rastreador)
Si AWS Glue no consigue ejecutar correctamente un rastreador para catalogar sus datos, puede ser debido a una de las siguientes razones. En primer lugar compruebe si un error aparece en la lista de rastreadores de la consola de AWS Glue. Compruebe si hay un icono de exclamación junto al nombre del rastreador y pase el ratón por encima del icono para ver si hay mensajes asociados.
-
Compruebe los registros del rastreador ejecutado en CloudWatch Logs en
/aws-glue/crawlers
.
Error: Partitions were not updated (Las particiones no se han actualizado)
Si las particiones no se actualizaron en el Data Catalog al ejecutar un trabajo de ETL, estas instrucciones de registro de la clase DataSink
de CloudWatch Logs pueden resultarle útiles:
-
"
Attempting to fast-forward updates to the Catalog - nameSpace:
": muestra qué base de datos, tabla e identificador de catálogo se intenta modificar en este trabajo. Si esta instrucción no está aquí, compruebe sienableUpdateCatalog
está establecido en true y se ha pasado correctamente como un parámetrogetSink()
o enadditional_options
. -
"
Schema change policy behavior:
": muestra qué valorupdateBehavior
del esquema se ha pasado. -
"
Schemas qualify (schema compare):
": será true o false. -
"
Schemas qualify (case-insensitive compare):
": será true o false. -
Si ambos son falsos y su
updateBehavior
no está establecido enUPDATE_IN_DATABASE
, entonces el esquema de DynamicFrame tendrá que ser idéntico o contener un subconjunto de las columnas que se muestran en el esquema de la tabla del Data Catalog.
Para obtener más información sobre actualización de particiones, consulte Cómo actualizar el esquema y añadir nuevas particiones al Catálogo de datos mediante trabajos de ETL de AWS Glue.
Error: no se pudo actualizar el marcador de trabajo debido a que la versión no coincide
Es posible que esté intentando aplicar parámetros en trabajos de AWS Glue para aplicar la misma transformación/lógica en distintos conjuntos de datos de Amazon S3. Desea realizar un seguimiento de los archivos procesados en las ubicaciones proporcionadas. Cuando ejecuta el mismo trabajo en el mismo bucket de origen y escribe en el mismo destino o en uno diferente simultáneamente (concurrencia >1), el trabajo falla con este error:
py4j.protocol.Py4JJavaError: An error occurred while callingz:com.amazonaws.services.glue.util.Job.commit.:com.amazonaws.services.gluejobexecutor.model.VersionMismatchException: Continuation update failed due to version mismatch. Expected version 2 but found version 3
Solución: establezca la concurrencia en 1 o no ejecute el trabajo simultáneamente.
Actualmente, los marcadores de AWS Glue no admiten ejecuciones de trabajos simultáneos y las confirmaciones fallarán.
Error: A job is reprocessing data when job bookmarks are enabled (Un trabajo está reprocesando datos cuando los marcadores de trabajo están habilitados)
Es posible que en algunos casos tenga habilitados marcadores de trabajo de AWS Glue, pero su trabajo de ETL está reprocesando los datos que ya se han procesado anteriormente. Compruebe si hay estas causas comunes de este error:
Simultaneidad máxima
Si el número máximo establecido de ejecuciones concurrentes para el trabajo es mayor que el valor predeterminado de 1, esto puede interferir con los marcadores de trabajo. Esto puede suceder cuando los marcadores de trabajo comprueban la hora de la última modificación para verificar los objetos que deben volver a procesarse. Para obtener más información, consulte la discusión de simultaneidad máxima en Configuración de las propiedades de trabajos para trabajos de Spark en AWS Glue.
Objeto de trabajo ausente
Asegúrese de que su script de ejecución de trabajo termina con la siguiente confirmación:
job.commit()
Al incluir este objeto, AWS Glue registra la marca temporal y la ruta de la ejecución del trabajo. Si ejecuta el trabajo de nuevo con la misma ruta, AWS Glue procesa solo los archivos nuevos. Si no incluye este objeto y los marcadores de trabajo están habilitados, el trabajo vuelve a procesar los archivos ya procesados junto con los nuevos archivos y crea redundancia en el almacén de datos de destino del trabajo.
Parámetro de contexto de transformación ausente
El contexto de transformación es un parámetro opcional en la clase GlueContext
, pero los marcadores de trabajo no funcionan si no lo incluye. Para solucionar este error, añada el parámetro de contexto de transformación al crear la DynamicFrame, tal y como se muestra a continuación:
sample_dynF=create_dynamic_frame_from_catalog(database, table_name,transformation_ctx="sample_dynF")
Origen de entrada
Si utiliza una base de datos relacional (una conexión JDBC) para la fuente de entrada, los marcadores de trabajo funcionan solamente si las claves de principal de la tabla se encuentran en orden secuencial. Los marcadores de trabajo funcionan en nuevas filas, pero no en filas actualizadas. Esto se debe a que los marcadores de trabajo buscan las claves principales, que ya existen. Esto no se aplica si su origen de entrada es Amazon Simple Storage Service (Amazon S3).
Hora de la última modificación
Para orígenes de entrada de Amazon S3, los marcadores de trabajo comprueban la hora de última modificación de los objetos, en lugar de los nombres de archivo, para verificar qué objetos deben volver a procesarse. Si los datos de origen de entrada se han modificado desde la última ejecución de trabajo, los archivos se vuelven a procesar al ejecutar el trabajo de nuevo.
Error: comportamiento de conmutación por error entre VPC en AWS Glue
El siguiente proceso se utiliza para la conmutación por error de los trabajos de la versión 4.0 de AWS Glue y versiones anteriores.
Resumen: se selecciona una conexión AWS Glue en el momento en que se envía la ejecución de un trabajo. Si la ejecución del trabajo presenta algunos problemas (falta de direcciones IP, conectividad al origen, problema de enrutamiento), la ejecución fallará. Si los reintentos están configurados, AWS Glue lo volverá a intentar con la misma conexión.
-
Para cada intento de ejecución, AWS Glue comprobará el estado de las conexiones en el orden indicado en la configuración del trabajo, hasta que encuentre una que pueda usar. En caso de que se produzca un error en la zona de disponibilidad (AZ), las conexiones procedentes de esa zona no pasarán la comprobación y se omitirán.
-
AWS Glue valida la conexión con lo siguiente:
comprueba si el identificador y la subred de Amazon VPC son válidos.
comprueba que existe una puerta de enlace NAT o un punto de conexión de VPC de Amazon.
comprueba que la subred tiene más de 0 direcciones IP asignadas.
comprueba que la AZ esté en buen estado.
AWS Glue no puede verificar la conectividad en el momento de enviar el trabajo.
-
En el caso de los trabajos que utilizan Amazon VPC, todos los controladores y ejecutores se crearán en la misma zona de disponibilidad con la conexión seleccionada en el momento de enviar el trabajo.
-
Si los reintentos están configurados, AWS Glue lo volverá a intentar con la misma conexión. Esto se debe a que no podemos garantizar que los problemas con esta conexión se prolonguen durante mucho tiempo. Si una zona de disponibilidad falla, el trabajo existente que se ejecuta (según la etapa de ejecución del trabajo) en esa zona puede fallar. Al volver a intentarlo, se debe detectar un error en la zona de disponibilidad y elegir otra zona de disponibilidad para la nueva ejecución.