Come risolvo l’errore “Comando non riuscito con codice di uscita” su AWS Glue?

Ultimo aggiornamento: 24/08/2021

Il mio processo di estrazione, trasformazione e caricamento (ETL) di AWS Glue non è riuscito, riportando l'errore "Comando non riuscito con codice di uscita".

Breve descrizione

Questo errore viene visualizzato quando si verificano una o più delle seguenti condizioni:

  • Il driver o l'esecutore del processo ha esaurito la memoria.
  • Lo script ETL presenta problemi relativi al codice.
  • Il ruolo IAM di AWS Glue non dispone delle autorizzazioni necessarie per accedere al percorso dello script.

Quando l'esecuzione del processo non fallisce a causa di uno dei motivi precedenti, vengono scritti su Amazon CloudWatch i rispettivi registri degli errori.

Risoluzione

Utilizza i passaggi appropriati per la risoluzione dei problemi in base al tuo caso d'uso.

Il processo fallisce riportando l'errore "Comando non riuscito con codice di uscita 1" e i registri di CloudWatch mostrano l'errore "java.lang.OutOfMemoryError: Java heap space"

L'errore "java.lang.OutOfMemoryError: Java heap space" indica che un processo driver nel processo sta esaurendo la memoria. Per sapere se l'eccezione di memoria insufficiente (OOM) è causata da un driver o da un esecutore, consulta Debug di eccezioni OOM e anomalie dei processi. Per eseguire il debug dell'eccezione OOM causata dal driver, consulta Come si risolve l'errore "java.lang.OutOfMemoryError: Java heap space" in AWS Glue? Per ulteriori informazioni, consulta Debug di un'eccezione OOM del driver.

Il processo AWS Glue fallisce riportando l'errore "Comando non riuscito con codice di uscita 1" e i registri di CloudWatch mostrano l'errore "Container terminato da YARN a causa del superamento dei limiti di memoria"

Questo errore indica che è l'esecutore a causare l'eccezione OOM. Per eseguire il debug dell'eccezione OOM causata dall'esecutore, consulta Debug di un'eccezione OOM dell'esecutore.

Il processo AWS Glue fallisce riportando l'errore "Comando non riuscito con codice di uscita 10"

Controlla i registri di CloudWatch perché il processo individui gli errori relativi agli esecutori. Questo errore si verifica in genere durante la fase casuale di Spark. Ad esempio, l'errore si verifica quando viene chiamata l'azione di ripartizione e l'esecutore casuale esaurisce la memoria. Monitora i processi straggler dell'esecutore durante le operazioni di rimescolamento dei dati. Per ulteriori informazioni, consulta Debug di fasi impegnative e processi straggler.

Il processo AWS Glue fallisce riportando l'errore "Comando non riuscito con codice di uscita 1" e non si avvia

Controlla i registri dei processi di CloudWatch per individuare eventuali errori relativi ad Amazon Simple Storage Service (Amazon S3). I registri degli errori potrebbero avere un aspetto simile al seguente:

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied' Request ID: xxxxxxxxxxxxx)

Questo errore si verifica quando il ruolo IAM di AWS Glue non dispone dell'autorizzazione necessaria per accedere allo script ETL di AWS Glue dal percorso Amazon S3. Verifica le autorizzazioni richieste da un ruolo IAM di AWS Glue per accedere al percorso della posizione dello script. Accertati che le autorizzazioni necessarie siano associate al ruolo.

Il processo AWS Glue fallisce con l'errore "Comando non riuscito con codice di uscita 1" e i registri di CloudWatch mostrano l'errore "Eccezione nel thread "main" java.lang.NoSuchMethodError", o "Eccezione nel thread "main” java.lang.ExceptionInInitializerError"

Queste eccezioni indicano un conflitto di dipendenze JAR o un conflitto di versione di Spark. Controlla che l'eseguibile JAR e/o i file JAR aggiuntivi passati nel processo non siano in conflitto.

Il processo AWS Glue fallisce riportando l'errore "Comando non riuscito con codice di uscita 1" e i registri di CloudWatch mostrano l'errore "RuntimeError"

L'errore "RuntimeError" indica che l'istruzione SQL di Spark passata nello script ETL presenta un'eccezione semantica.

Ad esempio:

RuntimeError: FAILED: SemanticException [Error 10006]: Partition not found

Per risolvere questo errore, consulta i registri dei processi di AWS Glue per individuare eventuali errori di sintassi SQL.

Nota: questo errore potrebbe verificarsi a causa di diversi motivi, ad esempio problemi di rete. Pertanto, le fasi di risoluzione non sono limitate a quelle esposte nell'articolo.