Si detecta errores en la Calidad de datos de AWS Glue, utilice las siguientes soluciones como ayuda para encontrar el origen de los problemas y corregirlos.
Contenido
Error: los conjuntos de reglas no disponen de un nombre único
Error: error de desbordamiento con un conjunto de reglas grande
AnalysisException: no es posible verificar la existencia de la base de datos predeterminada
Mensaje de error: el mapa de teclas proporcionado no es adecuado para determinados marcos de datos
InvalidInputException (estado: 400): las reglas de calidad de datos no se pueden analizar
Error: falta el módulo Calidad de datos de AWS Glue
Mensaje de error: ningún módulo se llama “awsgluedq”.
Solución: este error se produce al ejecutar Calidad de datos de AWS Glue en una versión no compatible. AWS Calidad de datos de Glue solo es compatible con la versión 3.0 de Glue y versiones posteriores.
Error: permisos de AWS Lake Formation insuficientes
Mensaje de error: excepción en la clase de usuario: com.amazonaws.services.glue.model.AccessDeniedException
: permisos de Lake Formation insuficientes en impact_sdg_involvement (servicio: AWS Glue; código de estado: 400; código de error: AccessDeniedException; ID de solicitud: 465ae693-b7ba-4df0-a4e4-6b17xxxxxxxx; proxy: nulo).
Solución: es necesario que dé permisos suficientes en AWS Lake Formation.
Error: los conjuntos de reglas no disponen de un nombre único
Mensaje de error: excepción en la clase de usuario: ...services.glue.model.AlreadyExistsException: ya hay otro conjunto de reglas con el mismo nombre.
Solución: los conjuntos de reglas son globales y es necesario que sean únicos.
Error: tablas con caracteres especiales
Mensaje de error: excepción en la clase de usuario: org.apache.spark.sql.AnalysisException: no se puede resolver “C” dado el conjunto de columnas de entrada: [primary.data_end_time, primary.data_start_time, primary.end_time, primary.last_updated, primary.message, primary.process_date, primary.rowhash, primary.run_by, primary.run_id, primary.start_time, primary.status]; línea 1 posición 44;.
Solución: actualmente existe una limitación que impide que Calidad de datos de AWS Glue se ejecute en tablas con caracteres especiales como “.”.
Error: error de desbordamiento con un conjunto de reglas grande
Mensaje de error: excepción en la clase de usuario: java.lang.StackOverflowError.
Solución: si tiene un conjunto de reglas grande de más de 2000 reglas, es posible que se produzca este problema. Divida sus reglas en varios conjuntos de reglas.
Error: el estado general de la regla falló
Condición de error: mi conjunto de reglas es correcto, pero el estado general de mi regla tiene errores.
Solución: lo más probable es que este error sea porque eligió la opción de publicar las métricas en Amazon CloudWatch mientras publicaba. Si su conjunto de datos está en una VPC, es posible que su VPC no permita que AWS Glue publique métricas en Amazon CloudWatch. En este caso, debe configurar un punto de conexión para que la VPC pueda acceder a Amazon CloudWatch.
AnalysisException: no es posible verificar la existencia de la base de datos predeterminada
Condición de error: AnalysisException: no se puede verificar la existencia de la base de datos predeterminada: com.amazonaws.services.glue.model.AccessDeniedException: permiso(s) de Lake Formation insuficiente(s) por defecto (servicio: AWS Glue; código de estado: 400; código de error: AccessDeniedException; ID de solicitud: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX; proxy: nulo)
Solución: en la integración del catálogo del trabajo de AWS Glue, AWS Glue siempre intenta comprobar si la base de datos predeterminada existe o no utiliza AWS Glue GetDatabase API
. Cuando no se concede el permiso DESCRIBE
de Lake Formation o se concede el permiso GetDatabase IAM
, el trabajo falla al verificar la existencia de la base de datos predeterminada.
Para resolverlo:
-
Agregue el permiso
DESCRIBE
en Lake Formation para la base de datos predeterminada. -
Configure el rol de IAM asociado al trabajo de AWS Glue como creador de bases de datos en Lake Formation. Esto creará automáticamente una base de datos predeterminada y otorgará los permisos de Lake Formation necesarios para el rol.
-
Deshabilite la opción
--enable-data-catalog
. (Se muestra como Usar Data Catalog como metaalmacén de Hive en AWS Glue Studio).Si no necesita la integración Data Catalog de Spark SQL en el trabajo, puede desactivarlo.
Mensaje de error: el mapa de teclas proporcionado no es adecuado para determinados marcos de datos
Condición de error: el mapa de teclas dado no es adecuado para determinados marcos de datos.
Solución: utiliza el tipo de regla DataSetMatch y las claves de unión están duplicadas. Las claves de unión deben ser únicas y no deben ser NULAS. En los casos en los que no pueda tener claves de unión que sean únicas, considere la posibilidad de usar otros tipos de reglas, como AggregateMatch, para hacer coincidir los datos de resumen.
Excepción en la clase de usuario: java.lang.RuntimeException: no fue posible recuperar los datos. Para obtener más información, consulte los registros en CloudWatch
Condición de error: excepción en la clase de usuario: java.lang.RuntimeException: no fue posible recuperar los datos. Para obtener más información, consulte los registros de CloudWatch.
Solución: esto sucede cuando crea reglas de calidad de datos en una tabla basada en Amazon S3 que se compara con Amazon RDS o Amazon Redshift. En estos casos, AWS Glue no puede cargar la conexión. En cambio, intente configurar la regla de calidad de datos en el conjunto de datos de Amazon Redshift o de Amazon RDS. Este es un error conocido.
ERROR DE INICIO: error al descargar desde S3 para bucket
Condición de error: ERROR DE INICIO: error durante la descarga desde S3 para bucket: aws-glue-ml-data-quality-assets-us-east-1, key:
jars/aws-glue-ml-data-quality-etl.jar.Access Denied (Service: Amazon S3; Status Code: 403; Please refer logs for details)
.
Solución: los permisos en el rol transferidos a Calidad de datos de AWS Glue deben permitir la lectura desde la ubicación de Amazon S3 previa. Esta política de IAM debe estar asociada con la función:
{
"Sid": "allowS3",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::aws-glue-ml-data-quality-assets-<region>/*"
}
Consulte la autorización de calidad de los datos para obtener información detallada sobre los permisos. Estas bibliotecas son necesarias para evaluar la calidad de los datos de sus conjuntos de datos.
InvalidInputException (estado: 400): las reglas de calidad de datos no se pueden analizar
Condición de error: InvalidInputException (estado: 400): las reglas de calidad de datos no se pueden analizar.
Solución: hay muchas posibilidades de que se produzca este error. Una posibilidad es que las reglas contengan comillas simples. Revise que sean comillas dobles. Por ejemplo:
Rules = [
ColumnValues "tipo_vinculo" in ["CODO", "DOCO", "COCO", "DODO"] AND "categoria" = 'ES"
AND "cod_bandera" = 'CEP'
Cambie esto a:
Rules = [
(ColumnValues "tipovinculo" in [ "CODO", "DOCO", "COCO", "DODO"]) AND (ColumnValues "categoria" = "ES")
AND (ColumnValues "codbandera" = "CEP")
]
Error: EventBridge no activa los trabajos de calidad de datos de Glue según la programación que configuré
Condición de error: EventBridge no activa trabajos de AWS Glue Data Quality según la programación que configuré.
Solución: es posible que el rol que activa el trabajo no tenga los permisos necesarios. Asegúrese de que el rol que usa para activar los trabajos tenga los permisos necesarios mencionados en la configuración de IAM necesaria para programar las ejecuciones de evaluación.
Errores de CustomSQL
Condición de error: The output from CustomSQL must contain at least one column that matches the
input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but no columns from the SQL result are
present in the Input Dataset. Ensure that matching columns are returned from the SQL
.
Solución: la consulta SQL es válida, pero asegúrese de seleccionar únicamente las columnas de la tabla principal. Se puede producir este error cuando selecciona funciones de agregación como sumar o contar en las columnas de la tabla principal.
Condición de error: There was a problem when executing your SQL statement: cannot resolve "Col"
.
Solución: esta columna no está presente en la tabla principal.
Condición de error: The columns that are returned from the SQL statement should only belong to the primary table.
"In this case, some columns ( Col ) belong to reference table"
.
Solución: en las consultas SQL, cuando una la tabla principal con otras tablas de referencia, asegúrese de que la instrucción de selección solo contenga los nombres de las columnas de la tabla principal para generar resultados a nivel de fila para la tabla principal.
Reglas dinámicas
Condición de error: Dynamic
rules require job context, and cannot be evaluated in interactive session or data
preview.
.
Causa: es posible que este mensaje de error aparezca en los resultados de la vista previa de datos o en otras sesiones interactivas cuando hay reglas de calidad de datos dinámicas en el conjunto de reglas. Las reglas dinámicas hacen referencia a métricas históricas asociadas con un nombre de trabajo y un contexto de evaluación determinados, por lo que no se pueden evaluar en sesiones interactivas.
Solución: Al ejecutar el trabajo de AWS Glue se generarán métricas históricas, a las que se podrá hacer referencia en futuras ejecuciones del mismo trabajo.
Condición de error:
-
[RuleType] rule only supports simple atomic operands in thresholds.
. -
Function last not yet implemented for [RuleType] rule.
Resolución: Por lo general, se aceptan reglas dinámicas para todos los tipos de reglas de DQDL en expresiones numéricas (consulte la referencia sobre DQDL). Sin embargo, algunas reglas que producen diversas métricas, como ColumnValues y ColumnLength, aún no se aceptan.
Condición de error: Binary expression operands must resolve to a single number.
.
Causa: las reglas dinámicas aceptan expresiones binarias, como RowCount > avg(last(5)) * 0.9
. En este caso, la expresión binaria es avg(last(5)) * 0.9
. Esta regla es válida ya que ambos operandos, avg(last(5))
y 0.9
, se resuelven en un solo número. Un ejemplo incorrecto es RowCount > last(5) * 0.9
, ya que last(5)
generará una lista que no se puede comparar de manera significativa con el recuento de filas actual.
Solución: use las funciones de agregación para reducir un operando con valores de lista a un solo número.
Condición de error:
-
Rule threshold results in list, and a single value is expected. Use aggregation functions to produce a single value. Valid example: sum(last(10)), avg(last(10)).
-
Rule threshold results in empty list, and a single value is expected.
Causa: es posible usar las reglas dinámicas para comparar alguna característica del conjunto de datos con sus valores históricos. La última función permite recuperar varios valores históricos, siempre que se dé un argumento entero positivo. Por ejemplo, last(5)
recuperará los cinco últimos valores que se observaron en las ejecuciones de tareas de su regla.
Solución: es necesario utilizar una función de agregación para reducir estos valores a un solo número, para poder realizar una comparación significativa con el valor observado en la ejecución de tareas actual.
Ejemplos válidos:
RowCount >= avg(last(5))
RowCount > last(1)
RowCount < last()
Ejemplo no válido: RowCount > last(5)
.
Condición de error:
-
Function index used in threshold requires positive integer argument.
-
Index argument must be an integer. Valid syntax example:
RowCount > index(last(10, 2))
, which meansRowCount
must be greater than third most recent execution from last 10 job runs.
Solución: al crear reglas dinámicas, puede usar la función de agregación index
para seleccionar un valor histórico de una lista. Por ejemplo, RowCount > index(last(5)
: 1) comprobará si el recuento de filas observado en el trabajo actual es estrictamente superior al segundo recuento de filas más reciente observado en su trabajo. index
está indexado a cero.
Condición de error: IllegalArgumentException: Parsing Error: Rule Type: DetectAnomalies is not valid
.
Resolución: la detección de anomalías solo está disponible en la versión 4.0. de AWS Glue.
Condición de error: IllegalArgumentException: Parsing Error: Unexpected condition for rule of type ...
no viable alternative at input ...
.
Nota: ...
es dinámico. Ejemplo:IllegalArgumentException: Parsing Error: Unexpected condition for rule of type RowCount with
number return type, line 4:19 no viable alternative at input '>last'
.
Resolución: la detección de anomalías solo está disponible en la versión 4.0. de AWS Glue.
Excepción en la Clase de usuario: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException
Condición del error: Exception in User Class: org.apache.spark.sql.AnalysisException:
org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table mailpiece_submitted.
StorageDescriptor#InputFormat cannot be null for table: mailpiece_submitted (Service: null; Status Code: 0; Error Code:
null; Request ID: null; Proxy: null)
Causa: Apache Iceberg se utiliza en el Catálogo de datos de AWS Glue y el atributo de formato de entrada en el Catálogo de datos de AWS Glue está vació.
Solución: este problema se produce cuando se utiliza el tipo de regla CustomSQL en la regla de calidad de datos. Una forma de solucionarlo es utilizar “primario” o agregar el nombre del catálogo glue_catalog.
a <database>.<table>
in Custom ruletype
.
UNCLASSIFIED_ERROR; IllegalArgumentException: Error de análisis: no se proporcionaron reglas ni analizadores, no hay una alternativa viable en la entrada
Condición del error: UNCLASSIFIED_ERROR; IllegalArgumentException: Parsing Error: No rules or
analyzers provided., no viable alternative at input
Resolución: el DQDL no se puede analizar. Hay algunos casos en los que esto puede ocurrir. Si utiliza reglas compuestas, asegúrese de que estén entre paréntesis.
(RowCount >= avg(last(10)) * 0.6) and (RowCount <= avg(last(10)) * 1.4) instead of
RowCount >= avg(last(10)) * 0.6 and RowCount <= avg(last(10)) * 1.4