Perché non riesco a vedere i parametri di Amazon CloudWatch per il mio processo ETL di AWS Glue nemmeno dopo aver abilitato i parametri di processo?

Ultimo aggiornamento: 20/08/2021

Ho abilitato l'opzione per creare parametri di processo per il mio processo di estrazione, trasformazione e caricamento (ETL) di AWS Glue. Tuttavia, non riesco a visualizzare i parametri del processo in Amazon CloudWatch.

Breve descrizione

AWS Glue invia i parametri a CloudWatch ogni 30 secondi e il pannello di controllo della console di CloudWatch è configurato per visualizzare questi parametri ogni minuto. I parametri di AWS Glue rappresentano i valori delta dei valori segnalati in precedenza. Il pannello di controllo dei parametri aggrega i valori di 30 secondi per ottenere un valore per l'ultimo minuto. I parametri di processo per il tuo processo sono abilitati con l'inizializzazione di un GlueContext nello script del processo. I parametri vengono aggiornati solo alla fine di un processo Apache Spark. I parametri di processo rappresentano i valori aggregati di tutti i processi Spark completati.

Risoluzione

Aumenta il tempo di esecuzione del processo AWS Glue: i parametri di CloudWatch vengono segnalati ogni 30 secondi. Pertanto, se il tempo di esecuzione del processo è inferiore a 30 secondi, non vengono inviati parametri di processo a CloudWatch. AWS Glue utilizza i parametri di Spark e Spark utilizza la libreria di parametri di DropWizard per la pubblicazione degli stessi. Per ottenere i parametri di AWS Glue, il tuo processo necessita di un'esecuzione di almeno 30 secondi. L'aggiornamento del processo per elaborare più dati può contribuire ad aumentarne il tempo di esecuzione. Tuttavia, è possibile utilizzare una soluzione temporanea per visualizzare i parametri di processo. È possibile aumentare il tempo di esecuzione del processo AWS Glue includendovi la funzione time.sleep(). È possibile includere time.sleep() nel processo all'inizio o alla fine del codice in base al tuo caso d'uso.

Importante: l'utilizzo della funzione time.sleep() non è una best practice per quanto riguarda la scrittura di codice.

Per Python:

import time
time.sleep(30)

Per Scala:

Thread.sleep(30)

Assicurati che il processo abbia completato i processi Spark: i parametri di processo vengono segnalati dopo il completamento dei processi Spark. Pertanto, controlla e conferma che i processi Spark per il tuo processo siano stati completati e che il processo sia andato a buon fine.

Assicurati che GlueContext sia inizializzato nello script del processo: la classe GlueContext nello script del processo consente di scrivere parametri in CloudWatch. Se utilizzi uno script personalizzato che utilizza solo un DataFrame e non un DynamicFrame, la classe GlueContext potrebbe non essere inizializzata. Ciò potrebbe comportare la mancata scrittura dei parametri su CloudWatch. Se stai usando uno script personalizzato, assicurati di aggiornare il tuo processo per inizializzare la classe GlueContext.

Assicurati che il ruolo IAM di AWS Glue disponga dell'autorizzazione richiesta: controlla e conferma che il ruolo IAM associato al processo ETL disponga dell'autorizzazione cloudwatch:PutMetricData per creare parametri in CloudWatch. Se utilizzi un ruolo personalizzato, assicurati che il ruolo abbia l'autorizzazione per scrivere i parametri di processo in CloudWatch.
Nota: è consigliabile utilizzare la policy gestita di AWS AWSGlueServiceRole per gestire le autorizzazioni.


Questo articolo ti è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?