Résolution des erreurs de plans dans AWS Glue - AWS Glue

Résolution des erreurs de plans dans AWS Glue

Si vous rencontrez des erreurs lorsque vous utilisez des modèles AWS Glue, utilisez les solutions suivantes afin de trouver la source des problèmes et de corriger ceux-ci.

Error: missing PySpark module (Erreur : module PySpark manquant)

AWS Glue renvoie l'erreur « Unknown error executing layout generator function ModuleNotFoundError: No module named 'pyspark' » (Erreur inconnue lors de l'exécution de la fonction de générateur de disposition ModuleNotFounderror : aucun module nommé 'pyspark').

Lorsque vous décompressez l'archive du modèle, cela peut ressembler à l'un des éléments suivants :

$ unzip compaction.zip Archive: compaction.zip creating: compaction/ inflating: compaction/blueprint.cfg inflating: compaction/layout.py inflating: compaction/README.md inflating: compaction/compaction.py $ unzip compaction.zip Archive: compaction.zip inflating: blueprint.cfg inflating: compaction.py inflating: layout.py inflating: README.md

Dans le premier cas, tous les fichiers liés au modèle ont été placés dans un dossier nommé compactage et il a ensuite été converti en un fichier zip nommé compaction.zip.

Dans le second cas, tous les fichiers requis pour le modèle n'étaient pas inclus dans un dossier et ont été ajoutés en tant que fichiers racine sous le fichier zip compaction.zip.

La création d'un fichier dans l'un des formats ci-dessus est autorisée. Assurez-vous toutefois que blueprint.cfg a le chemin d'accès approprié au nom de la fonction dans le script qui génère la mise en page.

Exemples

Dans le cas 1 : blueprint.cfg doit disposer de layoutGenerator comme suit :

layoutGenerator": "compaction.layout.generate_layout"

Dans le cas 2 : blueprint.cfg doit disposer de layoutGenerator comme suit :

layoutGenerator": "layout.generate_layout"

Si ce chemin n'est pas inclus correctement, vous pourriez voir une erreur comme indiqué. Par exemple, si vous avez la structure de dossiers mentionnée dans le cas 2 et que vous avez layoutGenerator comme indiquée dans le cas 1, vous pouvez voir l'erreur ci-dessus.

Error: missing blueprint config file (Erreur : fichier de configuration de modèle manquant)

AWS Glue renvoie l'erreur « Unknown error executing layout generator function FileNotFoundError: [Errno 2] No such file or directory: '/tmp/compaction/blueprint.cfg' » (Erreur inconnue lors de l'exécution de la fonction de générateur de mise en page FileNotFoundError : [Errno 2] aucun fichier ou répertoire de ce type : '/tmp/compaction/blueprint.cfg').

Le blueprint.cfg doit être placé au niveau racine de l'archive ZIP ou dans un dossier portant le même nom que l'archive ZIP.

Lorsque nous extrayons l'archive ZIP de modèle, blueprint.cfg devrait se trouver dans l'un des chemins suivants. S'il ne se trouve pas dans l'un des chemins suivants, vous pouvez voir l'erreur ci-dessus.

$ unzip compaction.zip Archive: compaction.zip creating: compaction/ inflating: compaction/blueprint.cfg $ unzip compaction.zip Archive: compaction.zip inflating: blueprint.cfg

Error: missing imported file (Erreur : fichier importé manquant)

AWS Glue renvoie l'erreur « Unknown error executing layout generator function FileNotFoundError: [Errno 2] No such file or directory:* *'demo-project/foo.py' » (Erreur inconnue lors de l'exécution de la fonction de générateur de mise en page FileNotFoundError : [Errno 2] Aucun fichier ou répertoire de ce type :* *'demo-project/foo.py').

Si votre script de génération de mise en page a une fonctionnalité pour lire d'autres fichiers, assurez-vous de donner un chemin complet pour le fichier à importer. Par exemple, le script Conversion.py peut être référencé dans Layout.py. Pour en savoir plus, veuillez consulter la rubrique Exemple de projet de plan.

Error: not authorized to perform iamPassRole on resource (Erreur : non autorisé à exécuter iamPassRole sur la ressource)

AWS Glue renvoie l'erreur « User: arn:aws:sts::123456789012:assumed-role/AWSGlueServiceRole/GlueSession is not authorized to perform: iam:PassRole on resource: arn:aws:iam::123456789012:role/AWSGlueServiceRole » (L'utilisateur : arn:aws:sts::123456789012:assumed-role/AWSGlueServiceRole/GlueSession n'est pas autorisé à effectuer : iam:PassRole sur la ressource : arn:aws:iam::123456789012:role/AWSGlueServiceRole)

Si les travaux et les crawlers du flux de travail assument le même rôle que le rôle transmis pour créer le flux de travail à partir du modèle, alors le rôle du modèle doit inclure l'autorisation iam:PassRole pour lui-même.

Si les travaux et les crawlers du flux de travail assument un rôle autre que celui transmis pour créer les entités du flux de travail à partir du modèle, le rôle de ce dernier doit inclure l'autorisation iam:PassRole sur cet autre rôle plutôt que sur le rôle du modèle.

Pour plus d’informations, veuillez consulter Autorisations pour les rôles de plans.

Error: invalid cron schedule (Erreur : calendrier cron non valide)

AWS Glue renvoie l'erreur « The schedule cron(0 0 * * * *) is invalid » (Le cron horaire [0 0 * * * *] n'est pas valide).

Fournissez une expression cron valide. Pour plus d'informations, consultez Planifications temporelles pour les tâches et les crawlers.

Error: a trigger with the same name already exists (Erreur : un déclencheur du même nom existe déjà)

AWS Glue renvoie l'erreur « Trigger with name 'foo_starting_trigger' already submitted with different configuration » (Trigger avec le nom 'foo_starting_trigger' déjà soumis avec une configuration différente).

Un modèle ne nécessite pas que vous définissiez des déclencheurs dans le script de mise en page pour la création de flux de travail. La création de déclencheur est gérée par la bibliothèque de modèles en fonction des dépendances définies entre deux actions.

La dénomination des déclencheurs est la suivante :

  • Pour le déclencheur de démarrage dans le flux de travail, le nom est <workflow_name>_starting_trigger.

  • Pour un nœud (tâche/crawler) dans le flux de travail qui dépend de l'achèvement d'un ou de plusieurs nœuds en amont ; AWS Glue définit un déclencheur avec le nom <workflow_name>_<node_name>_trigger.

Cette erreur signifie qu'un déclencheur du même nom existe déjà. Vous pouvez supprimer le déclencheur existant et relancer la création du flux de travail.

Note

La suppression d'un flux de travail ne supprime pas les nœuds du flux de travail. Bien que le flux de travail soit supprimé, il est possible que des déclencheurs soient laissés pour compte. Pour cette raison, vous ne pouvez pas recevoir une erreur « workflow already exists » (le flux de travail existe déjà), mais vous pouvez recevoir une erreur « trigger already exists » (le déclencheur existe déjà) dans le cas où vous créez un flux de travail, le supprimez, puis essayez de le recréer avec le même nom du même modèle.

Erreur : un flux de travail du même nom : foo existe déjà.

Le nom du flux de travail doit être unique. Veuillez essayer avec un nom différent.

Error: module not found in specified layoutGenerator path (Erreur : module introuvable dans le chemin LayoutGenerator spécifié)

AWS Glue renvoie l'erreur « Unknown error executing layout generator function ModuleNotFoundError: No module named 'crawl_s3_locations' » (Erreur inconnue lors de l'exécution de la fonction de générateur de disposition ModuleNotFounderror : aucun module nommé 'crawl_s3_locations').

layoutGenerator": "crawl_s3_locations.layout.generate_layout"

Par exemple, si vous avez le chemin layoutGenerator ci-dessus, lorsque vous décompressez l'archive de modèle, il doit ressembler à ce qui suit :

$ unzip crawl_s3_locations.zip Archive: crawl_s3_locations.zip creating: crawl_s3_locations/ inflating: crawl_s3_locations/blueprint.cfg inflating: crawl_s3_locations/layout.py inflating: crawl_s3_locations/README.md

Lorsque vous décompressez l'archive, si l'archive du modèle ressemble à ce qui suit, vous pouvez obtenir l'erreur ci-dessus.

$ unzip crawl_s3_locations.zip Archive: crawl_s3_locations.zip inflating: blueprint.cfg inflating: layout.py inflating: README.md

Vous pouvez voir qu'il n'y a pas de dossier nommé crawl_s3_locations et lorsque le chemin layoutGenerator fait référence au fichier de mise en page via le module crawl_s3_locations, vous pouvez obtenir l'erreur ci-dessus.

Error: validation error in Connections field (Erreur : erreur de validation dans le champ Connections [Connexions])

AWS Glue renvoie l'erreur « Unknown error executing layout generator function TypeError: Value ['foo'] for key Connections should be of type <class 'dict'>! » (Erreur inconnue lors de l'exécution de la fonction générateur de disposition TypeError : Valeur ['foo'] pour les connexions clés doivent être de type <class 'dict'> !).

Il s'agit d'une erreur de validation. Le champs Connections dans le champ Job attend un dictionnaire et à la place une liste de valeurs sont fournies, ce qui provoque l'erreur.

User input was list of values Connections= ['string'] Should be a dict like the following Connections*=*{'Connections': ['string']}

Pour éviter ces erreurs d'exécution lors de la création d'un flux de travail à partir d'un plan, vous pouvez valider les définitions du flux de travail, de la tâche et du crawler comme indiqué dans Tester un plan.

Référez-vous à la syntaxe dans la Référence des classes de plans AWS Glue pour définir la tâche AWS Glue, le crawler et le flux de travail dans le script de mise en page.