Résolution des erreurs liées à la qualité des données de AWS Glue - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des erreurs liées à la qualité des données de AWS Glue

Si vous rencontrez des erreurs dans AWS Glue Data Quality, utilisez les solutions suivantes pour trouver la source des problèmes et les résoudre.

Erreur : module AWS Glue Data Quality manquant

Message d'erreur : aucun module nommé « awsgluedq ».

Résolution : Cette erreur se produit lorsque vous exécutez AWS Glue Data Quality dans une version non prise en charge. AWS Glue Data Quality n'est prise en charge que dans les versions 3.0 et ultérieures de Glue.

Erreur : autorisations insuffisantes pour AWS Lake Formation

Message d'erreur : exception dans la classe utilisateur com.amazonaws.services.glue.model.AccessDeniedException : autorisations de Lake Formation insuffisantes sur impact_sdg_involvement (Service : ; Code d'état : 400 ; Code d'erreur : AWS Glue ; ID de demande : AccessDeniedException 465ae693-b7ba-4df0-a4e4-6b17xxxxxxxx ; Proxy : nul).

Résolution : Vous devez fournir des autorisations suffisantes dans AWS Lake Formation.

Erreur : les ensembles de règles ne sont pas nommés de manière unique

Message d'erreur : Exception dans la classe utilisateur :... services.glue.model. AlreadyExistsException: Un autre ensemble de règles portant le même nom existe déjà.

Résolution : les ensembles de règles sont globaux et doivent être uniques.

Erreur : tables contenant des caractères spéciaux

Message d'erreur : Exception dans la classe utilisateur : org.apache.spark.sql. AnalysisException: impossible de résoudre les colonnes d'entrée « C » données : [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] ; ligne 1 pos 44 ;.

Résolution : Il existe actuellement une limite selon laquelle AWS Glue Data Quality ne peut pas être exécuté sur des tables contenant des caractères spéciaux tels que «. ».

Erreur : erreur de débordement avec un ensemble de règles volumineux

Message d'erreur : Exception dans la classe utilisateur : java.lang. StackOverflowError.

Résolution : si vous disposez d'un ensemble de règles de plus de 2 000 règles, vous pouvez rencontrer ce problème. Divisez vos règles en plusieurs ensembles de règles.

Erreur : échec du statut général de la règle

Condition d'erreur : mon ensemble de règles est réussi, mais le statut général de mes règles est un échec.

Résolution : Cette erreur s'est probablement produite parce que vous avez choisi l'option de publier les statistiques sur Amazon CloudWatch lors de la publication. Si votre ensemble de données se trouve dans un VPC, celui-ci n'autorise peut-être pas AWS Glue à publier des métriques sur Amazon. CloudWatch Dans ce cas, vous devez configurer un point de terminaison pour que votre VPC puisse accéder à Amazon. CloudWatch

AnalysisException: Impossible de vérifier l'existence de la base de données par défaut

Condition d'erreur AnalysisException : Impossible de vérifier l'existence de la base de données par défaut : com.amazonaws.services.glue.model. AccessDeniedException: Autorisations de Lake Formation insuffisantes par défaut (Service : AWS Glue ; Code d'état : 400 ; Code d'erreur : ; ID de demande : XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX AccessDeniedException ; Proxy : nul)

Résolution : dans l'intégration du catalogue de la tâcheAWS Glue, AWS Glue essaie toujours de vérifier si la base de données par défaut existe ou non en utilisant AWS Glue GetDatabase API. Lorsque l'autorisation DESCRIBE Lake Formation n'est pas accordée ou que l'autorisation GetDatabase IAM est accordée, la tâche échoue lors de la vérification de l'existence de la base de données par défaut.

Pour résoudre le problème :

  1. Ajoutez l'autorisation DESCRIBE dans Lake Formation pour la base de données par défaut.

  2. Configurez le rôle IAM associé à la tâche AWS Glue en tant que créateur de base de données dans Lake Formation. Cela crée automatiquement une base de données par défaut et accorde les autorisations Lake Formation requises pour le rôle.

  3. Désactivez l'option --enable-data-catalog. (Elle est affichée en tant que Utiliser Data Catalog en tant que métastore Hive dans AWS Glue Studio).

    Si vous n'avez pas besoin de l'intégration Data Catalog de Spark SQL dans la tâche, vous pouvez la désactiver.

Message d'erreur : la clé de distribution fournie ne convient pas aux cadres de données fournies.

Condition d'erreur : la clé de distribution fournie ne convient pas aux cadres de données fournies.

Résolution : vous utilisez le DataSetMatchtype de règle et les clés de jointure sont dupliquées. Vos clés de jointure doivent être uniques et ne doivent pas être nulles. Dans les cas où vous ne pouvez pas avoir de clés de jointure uniques, envisagez d'utiliser d'autres types de règles, par exemple AggregateMatchpour établir une correspondance sur des données récapitulatives.

Exception dans la classe utilisateur : java.lang. RuntimeException : Impossible de récupérer les données. Vérifiez les connexions CloudWatch pour obtenir plus de détails

Condition d'erreur : exception dans la classe utilisateur : java.lang. RuntimeException : Impossible de récupérer les données. Vérifiez les connexions CloudWatch pour obtenir plus de détails.

Résolution : Cela se produit lorsque vous créez des règles DQ sur un tableau basé sur Amazon S3 qui est comparé à Amazon RDS ou. Amazon Redshift Dans ces cas, AWS Glue ne peut pas charger la connexion. Essayez plutôt de configurer une règle DQ sur le jeu de données Amazon Redshift ou Amazon RDS. Il s'agit d'un bogue connu.

ERREUR DE LANCEMENT : erreur lors du téléchargement depuis S3 pour le compartiment

Condition d'erreur : ERREUR DE LANCEMENT : erreur lors du téléchargement depuis S3 pour le compartiment : 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) .

Résolution : Les autorisations associées au rôle transmises à AWS Glue Data Quality doivent permettre la lecture depuis l'emplacement Amazon S3 précédent. Cette politique IAM doit être associée au rôle :

{ "Sid": "allowS3", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aws-glue-ml-data-quality-assets-<region>/*" }

Reportez-vous à Data Quality authorization pour obtenir la liste des autorisations détaillées. Ces bibliothèques sont nécessaires pour évaluer la qualité des données de vos jeux de données.

InvalidInputException (statut : 400) : DataQuality les règles ne peuvent pas être analysées

Condition d'erreur : InvalidInputException (statut : 400) : DataQuality les règles ne peuvent pas être analysées.

Résolution : il existe de nombreuses possibilités pour cette erreur. Il est possible que vos règles comportent des guillemets simples. Assurez-vous qu’ils sont entre guillemets. Par exemple :

Rules = [ ColumnValues "tipo_vinculo" in ["CODO", "DOCO", "COCO", "DODO"] AND "categoria" = 'ES" AND "cod_bandera" = 'CEP'

Remplacer par :

Rules = [ (ColumnValues "tipovinculo" in [ "CODO", "DOCO", "COCO", "DODO"]) AND (ColumnValues "categoria" = "ES") AND (ColumnValues "codbandera" = "CEP") ]

Erreur : Eventbridge ne déclenche pas les tâches Glue DQ selon le calendrier que j'ai configuré.

Condition d'erreur : erreur : Eventbridge ne déclenche pas les tâches AWS Glue Data Quality selon le calendrier que j'ai configuré.

Résolution : le rôle déclenchant la tâche ne dispose peut-être pas des autorisations appropriées. Assurez-vous que le rôle que vous utilisez pour lancer les tâches dispose des autorisations mentionnées dans la rubrique Configuration IAM nécessaire à la planification des évaluations.

Erreurs CustomSQL

Condition d'erreur : 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.

Résolution : la requête SQL est valide, mais assurez-vous que vous ne sélectionnez que les colonnes de la table principale. La sélection de fonctions d'agrégation telles que somme, nombre sur les colonnes à partir de la table principale peut entraîner cette erreur.

Condition d'erreur : There was a problem when executing your SQL statement: cannot resolve "Col".

Résolution : cette colonne n'est pas présente dans la table principale.

Condition d'erreur : 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".

Résolution : dans les requêtes SQL, lorsque vous attachez la table principale à d’autres tables de référence, assurez-vous que votre instruction SELECT ne contient que des noms de colonnes de votre table principale afin de générer des résultats au niveau de la ligne pour la table principale.

Règles dynamiques

Condition d’erreur: Dynamic rules require job context, and cannot be evaluated in interactive session or data preview..

Cause : ce message d’erreur peut apparaître dans les résultats de l’aperçu des données, ou dans d’autres sessions interactives, lorsque votre jeu de règles contient des règles DQ dynamiques. Les règles dynamiques font référence à des métriques historiques associées à un nom de tâche et à un contexte d’évaluation particuliers, de sorte qu’elles ne peuvent pas être évaluées lors de sessions interactives.

Résolution : l’exécution de votre tâche AWS Glue produira des métriques historiques, qui pourront être référencées lors d’exécutions ultérieures de la même tâche.

Condition d’erreur :

  • [RuleType] rule only supports simple atomic operands in thresholds..

  • Function last not yet implemented for [RuleType] rule.

Résolution : les règles dynamiques sont généralement prises en charge pour tous les types de règles DQDL dans les expressions numériques (voir Référence DQDL). Cependant, certaines règles qui produisent plusieurs métriques ColumnValues et ColumnLength ne sont pas encore prises en charge.

Condition d'erreur : Binary expression operands must resolve to a single number..

Cause : les règles dynamiques prennent en charge les expressions binaires, telles que RowCount > avg(last(5)) * 0.9. Ici, l’expression binaire est avg(last(5)) * 0.9. Cette règle est valide parce que les opérandes avg(last(5)) et 0.9 se résolvent en un seul nombre. Un exemple incorrect est RowCount > last(5) * 0.9 parce que last(5) produira une liste qui ne pourra pas être comparée de manière significative au nombre actuel de lignes.

Résolution : utilisez des fonctions d’agrégation pour réduire un opérande à valeurs multiples en un seul nombre.

Condition d’erreur :

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

Cause : les règles dynamiques peuvent être utilisées pour comparer certaines fonctionnalités de votre jeu de données avec ses valeurs historiques. La fonction « last » permet de récupérer plusieurs valeurs historiques, à condition de fournir un argument entier positif. Par exemple, last(5) récupérera les cinq dernières valeurs observées lors des exécutions de tâches pour votre règle.

Résolution : une fonction d’agrégation doit être utilisée pour réduire ces valeurs en un seul nombre afin de réaliser une comparaison significative avec la valeur observée dans l’exécution de tâche actuelle.

Exemples valides :

  • RowCount >= avg(last(5))

  • RowCount > last(1)

  • RowCount < last()

Exemple non valide : RowCount > last(5).

Condition d’erreur :

  • Function index used in threshold requires positive integer argument.

  • Index argument must be an integer. Valid syntax example: RowCount > index(last(10, 2)), which means RowCount must be greater than third most recent execution from last 10 job runs.

Résolution : lors de la création de règles dynamiques, vous pouvez utiliser la fonction d’agrégation index pour sélectionner une valeur historique à partir d’une liste. Par exemple, RowCount > index(last(5), 1) vérifiera si le nombre de lignes observé dans l’exécution de tâche actuelle est strictement supérieur au nombre de lignes le plus récent, après le dernier, observé pour votre tâche. index est indexé à partir de zéro.

Condition d'erreur : IllegalArgumentException: Parsing Error: Rule Type: DetectAnomalies is not valid.

Résolution : la détection d’anomalies est uniquement disponible dans AWS Glue 4.0.

Condition d'erreur : IllegalArgumentException: Parsing Error: Unexpected condition for rule of type ... no viable alternative at input ....

Remarque : ... est dynamique. Exemple: IllegalArgumentException: Parsing Error: Unexpected condition for rule of type RowCount with number return type, line 4:19 no viable alternative at input '>last'.

Résolution : la détection d’anomalies est uniquement disponible dans AWS Glue 4.0.

Exception dans la classe utilisateur : org.apache.spark.sql. AnalysisException: org.apache.hadoop.hive.ql.metadata. HiveException

Condition d'erreur : 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)

Cause : vous utilisez Apache Iceberg dans AWS Glue Data Catalog et l'attribut Input Format est vide dans AWS Glue Data Catalog.

Résolution : Ce problème se produit lorsque vous utilisez le type de règle CustomSQL dans votre règle DQ. Une façon de résoudre ce problème consiste à utiliser « principal » ou à ajouter un nom de catalogue glue_catalog. à<database>.<table> in Custom ruletype.

UNCLASSIFIED_ERROR ; IllegalArgumentException : Erreur d'analyse : aucune règle ni analyseur fournis., aucune alternative viable en entrée

Condition d'erreur : UNCLASSIFIED_ERROR; IllegalArgumentException: Parsing Error: No rules or analyzers provided., no viable alternative at input

Résolution : Le DQDL n'est pas analysable. Cela peut se produire dans quelques cas. Si vous utilisez des règles composites, assurez-vous qu'elles comportent des parenthèses droites.

(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