Risoluzione degli errori del blueprint in AWS Glue - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione degli errori del blueprint in AWS Glue

Se si verificano errori durante l'utilizzo AWS Glue progetti, usa le seguenti soluzioni per aiutarti a trovare l'origine dei problemi e risolverli.

Errore: modulo mancante PySpark

AWS Glue restituisce l'errore «Errore sconosciuto nell'esecuzione della funzione del generatore di layout ModuleNotFoundError: nessun modulo chiamato 'pyspark'».

Quando si decomprime l'archivio del piano, potrebbe verificarsi uno dei seguenti casi:

$ 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

Nel primo caso, tutti i file relativi al piano sono stati collocati in una cartella denominata compattazione convertita poi in un file zip denominato compaction.zip.

Nel secondo caso, tutti i file necessari per il piano non sono stati inclusi in una cartella e sono stati aggiunti come file root sotto il file zip compaction.zip.

È consentita la creazione di un file in uno dei formati sopra indicati. Accertati che blueprint.cfg abbia il percorso corretto al nome della funzione nello script che genera il layout.

Esempi

Nel caso 1: blueprint.cfg deve avere layoutGenerator come segue:

layoutGenerator": "compaction.layout.generate_layout"

Nel caso 2: blueprint.cfg deve avere layoutGenerator come segue

layoutGenerator": "layout.generate_layout"

Se questo percorso non è incluso correttamente, è possibile che venga visualizzato l'errore indicato. Ad esempio, se disponi della struttura di cartelle come indicato nel caso 2 e layoutGenerator come indicato come nel caso 1, potresti visualizzare l'errore di cui sopra.

Errore: file di configurazione del piano mancante

AWS Glue restituisce l'errore «Errore sconosciuto nell'esecuzione della funzione del generatore di layout FileNotFoundError: [Errno 2] Nessun file o directory di questo tipo: tmp/compaction/blueprint '/ .cfg'».

blueprint.cfg deve essere posizionato al livello root dell'archivio ZIP o all'interno di una cartella che ha lo stesso nome dell'archivio ZIP.

Quando si estrae l'archivio ZIP del piano, blueprint.cfg deve essere trovato in uno dei seguenti percorsi. Se non viene trovato in uno dei seguenti percorsi, potresti visualizzare l'errore di cui sopra.

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

Errore: file importato mancante

AWS Glue restituisce l'errore «Errore sconosciuto nell'esecuzione della funzione del generatore di layout FileNotFoundError: [Errno 2] Nessun file o directory di questo tipo: * *'demo-project/foo.py'».

Se lo script di generazione del layout dispone di funzionalità per leggere altri file, accertati di fornire un percorso completo per il file da importare. Ad esempio, Layout.py potrebbe fare riferimento allo script Conversion.py. Per ulteriori informazioni, consulta Progetto di schema di esempio.

Errore: non autorizzato a iamPassRole eseguire sulla risorsa

AWS Glue restituisce l'errore «User: arn:aws:sts: :123456789012:assumed-» role/AWSGlueServiceRole/GlueSession is not authorized to perform: iam:PassRole on resource: arn:aws:iam::123456789012:role/AWSGlueServiceRole

Se i processi e i crawler nel flusso di lavoro assumono lo stesso ruolo del ruolo passato per creare il flusso di lavoro dal piano, il ruolo del piano deve includere l'autorizzazione iam:PassRole su se stesso.

Se i processi e i crawler nel flusso di lavoro assumono un ruolo diverso da quello passato per creare le entità del flusso di lavoro dal piano, il ruolo del piano deve includere l'autorizzazione iam:PassRole sull'altro ruolo invece che sul ruolo del piano.

Per ulteriori informazioni, consulta Autorizzazioni per i ruoli degli schemi.

Errore: pianificazione cron non valida

AWS Glue restituisce l'errore «La schedulazione cron (0 0 * * * *) non è valida».

Fornisci un'espressione cron valida. Per ulteriori informazioni, consulta Pianificazioni basate sul tempo per processi e crawler.

Errore: esiste già un trigger con questo nome

AWS Glue restituisce l'errore «Trigger con nome 'foo_starting_trigger' già inviato con una configurazione diversa».

Un piano non richiede la definizione dei trigger nello script di layout per la creazione del flusso di lavoro. La creazione dei trigger viene gestita dalla libreria del piano in base alle dipendenze definite tra due operazioni.

La denominazione per i trigger è la seguente:

  • Per il trigger iniziale nel flusso di lavoro, la denominazione è <workflow_name>_starting_trigger.

  • Per un nodo (job/crawler) nel flusso di lavoro che dipende dal completamento di uno o più nodi upstream; AWS Glue <workflow_name><node_name>definisce un trigger con il nome _ _trigger

Questo errore indica che esiste già un trigger con lo stesso nome. È possibile eliminare il trigger esistente ed eseguire nuovamente la creazione del flusso di lavoro.

Nota

L'eliminazione di un flusso di lavoro non comporta l'eliminazione dei nodi all'interno del flusso di lavoro. È possibile che i trigger vengano lasciati anche se il flusso di lavoro viene eliminato. Per questo motivo, nel caso in cui crei un flusso di lavoro, lo elimini e quindi provi a ricrearlo con lo stesso nome dallo stesso piano, potresti non ricevere un errore che indica che il flusso di lavoro esiste già, ma potresti ricevere un errore che indica che il trigger esiste già.

Errore: un flusso di lavoro con nome “foo” esiste già.

Il nome del flusso di lavoro deve essere univoco. Prova con un nome diverso.

Errore: modulo non trovato nel percorso layoutGenerator specificato

AWS Glue restituisce l'errore «Errore sconosciuto nell'esecuzione della funzione del generatore di layout ModuleNotFoundError: nessun modulo denominato 'crawl_s3_locations'».

layoutGenerator": "crawl_s3_locations.layout.generate_layout"

Ad esempio, disponi del percorso LayoutGenerator di cui sopra, quando decomprimi l'archivio del piano, questo deve essere simile al seguente:

$ 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

Quando decomprimi l'archivio, se l'archivio del piano è simile al seguente, potresti visualizzare l'errore precedente.

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

Non esiste una cartella denominata crawl_s3_locations e quando il percorso layoutGenerator fa riferimento al file di layout tramite il modulo crawl_s3_locations, potresti visualizzare l'errore di cui sopra.

Errore: errore di convalida nel campo Connections (Connessioni)

AWS Glue <class 'dict'>restituisce l'errore «Errore sconosciuto nell'esecuzione della funzione del generatore di layout TypeError: il valore ['foo'] per le connessioni chiave dovrebbe essere di tipo!».

Si tratta di un errore di convalida. Il campo Connections nella classe Job si aspetta un dizionario e invece viene fornito un elenco di valori che causa l'errore.

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

Per evitare questi errori di runtime durante la creazione di un flusso di lavoro da uno schema, puoi convalidare le definizioni del flusso di lavoro, del processo e del crawler come descritto in Test di uno schema.

Fate riferimento alla sintassi in AWS Glue blueprint Classes Reference per definire il AWS Glue job, crawler e workflow nello script di layout.