Utilizzare il campionamento dei dati per osservare i dati della pipeline

Il campionamento dei dati consente di osservare i dati in ogni fase di un Dataflow una pipeline o un blocco note personalizzato. Queste informazioni possono aiutarti a eseguire il debug dei problemi della pipeline, che mostra gli input e gli output effettivi in un job in esecuzione o completato.

Gli utilizzi per il campionamento dei dati includono:

  • Durante lo sviluppo, osserva quali elementi vengono prodotti nella pipeline.

  • Se una pipeline genera un'eccezione, visualizza gli elementi correlati questa eccezione.

  • Durante il debug, visualizza gli output delle trasformazioni per assicurarti che venga risposta esatta.

  • Comprendi il comportamento di una pipeline senza la necessità di esaminarla le API nel tuo codice.

  • Visualizza gli elementi campionati in un secondo momento, al termine del job, oppure confronta i dati campionati con un'esecuzione precedente.

Panoramica

Dataflow può campionare i dati della pipeline nei seguenti modi:

  • Campionamento periodico. Con questo tipo di campionamento, Dataflow raccoglie i campioni durante l'esecuzione del job. Puoi utilizzare i dati campionati per verificare se la pipeline elabora gli elementi come previsto e per diagnosticare il runtime come tasti di scelta rapida o output errato. Per ulteriori informazioni, vedi Utilizza il campionamento periodico dei dati in questo documento.

  • Campionamento delle eccezioni. Con questo tipo di campionamento, Dataflow raccoglie i campioni se una pipeline genera un'eccezione. Puoi utilizzare gli esempi per per vedere i dati elaborati al momento dell'eccezione. Eccezione il campionamento è abilitato per impostazione predefinita e può essere disattivato. Per ulteriori informazioni, vedi Utilizza il campionamento delle eccezioni in questo documento.

Dataflow scrive gli elementi campionati nel Cloud Storage specificato dal Pipeline temp_location . Puoi visualizzare i dati campionati nella console Google Cloud o esaminare in Cloud Storage. I file vengono mantenuti Cloud Storage finché non li elimini.

Il campionamento dei dati viene eseguito dai worker Dataflow. Il campionamento è con il criterio del "best effort". I campioni potrebbero essere eliminati se si verificano errori temporanei.

Requisiti

Per utilizzare il campionamento dei dati, devi abilitare Runner v2. Per ulteriori informazioni, vedi Abilita Dataflow Runner v2.

Per visualizzare i dati campionati nella console Google Cloud, è necessario quanto segue Autorizzazioni di Identity and Access Management:

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list

Il campionamento periodico richiede il seguente SDK Apache Beam:

  • SDK Apache Beam Java 2.47.0 o successivo
  • SDK Apache Beam per Python 2.46.0 o successivo
  • Apache Beam Go SDK 2.53.0 o versioni successive

Il campionamento delle eccezioni richiede il seguente SDK Apache Beam:

  • SDK Apache Beam Java 2.51.0 o successivo
  • SDK Apache Beam per Python 2.51.0 o successivo
  • L'SDK Apache Beam Go non supporta il campionamento delle eccezioni.

A partire da questi SDK, Dataflow consente il campionamento delle eccezioni per tutti i job per impostazione predefinita.

Utilizzare il campionamento periodico dei dati

Questa sezione descrive come campionare i dati della pipeline in modo continuo durante l'esecuzione di un job.

Abilita il campionamento periodico dei dati

Il campionamento periodico è disattivato per impostazione predefinita. Per abilitarlo, imposta quanto segue opzione pipeline:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Vai

--experiments=enable_data_sampling

Puoi impostare l'opzione in modo programmatico o utilizzando la riga di comando. Per ulteriori informazioni le informazioni, vedi Imposta le opzioni sperimentali della pipeline.

Quando esegui un modello Dataflow, utilizza additional-experiments per abilitare il campionamento dei dati:

--additional-experiments=enable_data_sampling

Quando il campionamento periodico è abilitato, Dataflow raccoglie i campioni da ogni PCollection nel grafico del job. La frequenza di campionamento è di circa uno campionamento ogni 30 secondi.

A seconda del volume di dati, il campionamento periodico dei dati può aggiungere dell'overhead delle prestazioni. Pertanto, ti consigliamo di abilitare solo il campionamento durante i test e disabilitarlo per i carichi di lavoro di produzione.

Visualizza dati campionati

Per visualizzare i dati campionati nella console Google Cloud, esegui queste operazioni: passaggi:

  1. Nella console Google Cloud, vai ai Job di Dataflow. .

    Vai a Job

  2. Seleziona un job.

  3. Fai clic su riquadro inferiore per espandere il riquadro dei log.

  4. Fai clic sulla scheda Campionamento dei dati.

  5. Nel campo Passaggio, seleziona un passaggio della pipeline. Puoi anche selezionare un passaggio nel grafico del job.

  6. Nel campo Raccolta, scegli un PCollection.

Se Dataflow ha raccolto campioni per quell'elemento PCollection, il i dati campionati vengono visualizzati nella scheda. Per ogni esempio, la scheda mostra la creazione data e l'elemento di output. L'elemento di output è una rappresentazione serializzata dell'elemento raccolta, inclusi i dati dell'elemento, il timestamp e la finestra delle informazioni nel riquadro.

I seguenti esempi mostrano elementi campionati.

Java

TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}

Python

(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))

Vai

KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]

L'immagine seguente mostra come vengono visualizzati i dati campionati nella console Google Cloud.

Dati campionati nella console Google Cloud

Utilizzare il campionamento delle eccezioni

Se la pipeline genera un'eccezione non gestita, puoi visualizzare sia l'eccezione e l'elemento di input correlato all'eccezione. Campionamento delle eccezioni è abilitata per impostazione predefinita quando utilizzi un modello SDK Apache Beam.

Visualizza eccezioni

Per visualizzare un'eccezione:

  1. Nella console Google Cloud, vai ai Job di Dataflow. .

    Vai a Job

  2. Seleziona un job.

  3. Per espandere il riquadro Log, fai clic su Attiva/disattiva riquadro nel riquadro Log.

  4. Fai clic sulla scheda Campionamento dei dati.

  5. Nel campo Passaggio, seleziona un passaggio della pipeline. Puoi anche selezionare un passaggio nel grafico del job.

  6. Nel campo Raccolta, scegli un PCollection.

    La colonna Eccezione contiene i dettagli dell'eccezione. Nessun output per un'eccezione. Al contrario, la colonna Elemento di output contiene il parametro messaggio Failed to process input element: INPUT_ELEMENT, dove INPUT_ELEMENT è elemento di input correlato.

  7. Per visualizzare l'esempio di input e i dettagli dell'eccezione in una nuova finestra, fai clic su Apri in una nuova finestra.

L'immagine seguente mostra come viene visualizzata un'eccezione nella nella console Google Cloud.

Eccezione campionata nella console Google Cloud

Disattiva campionamento delle eccezioni

Per disabilitare il campionamento delle eccezioni, imposta la seguente opzione di pipeline:

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Puoi impostare l'opzione in modo programmatico o utilizzando la riga di comando. Per ulteriori informazioni le informazioni, vedi Imposta le opzioni sperimentali della pipeline.

Quando esegui un modello Dataflow, utilizza additional-experiments per disabilitare il campionamento delle eccezioni:

--additional-experiments=disable_always_on_exception_sampling

Considerazioni sulla sicurezza

Dataflow scrive i dati campionati in un cluster Cloud Storage del bucket che crei e gestisci. Utilizza le funzionalità di sicurezza di Cloud Storage per salvaguardare la sicurezza dei tuoi dati. In particolare, prendi in considerazione le seguenti misure di sicurezza aggiuntive:

Puoi anche offuscare i singoli campi nel tuo tipo di dati PCollection, in modo che che il valore non elaborato non compaia nei dati campionati:

  • Python: esegui l'override del metodo __repr__ o __str__.
  • Java: esegui l'override del metodo toString.

Tuttavia, non puoi offuscare gli input e gli output dei connettori I/O, a meno che modificare il codice sorgente del connettore.

Fatturazione

Quando Dataflow esegue il campionamento dei dati, ti vengono addebitati i costi l'archiviazione dei dati in Cloud Storage e le operazioni di lettura e scrittura di archiviazione ideale in Cloud Storage. Per ulteriori informazioni, vedi Prezzi di Cloud Storage.

Ogni worker Dataflow scrive campioni in batch, generando uno di lettura e una di scrittura per batch.

Risoluzione dei problemi

Questa sezione contiene informazioni sui problemi comuni riscontrati durante l'utilizzo del campionamento dei dati.

Errore di autorizzazioni

Se non hai l'autorizzazione per visualizzare gli esempi, la console Google Cloud mostra il seguente errore:

You don't have permission to view a data sample.

Per risolvere questo errore, verifica di avere autorizzazioni IAM richieste. Se l'errore persiste, potrebbe verificarsi un problema Criterio di negazione IAM.

Non vedo campioni

Se non vedi esempi, controlla quanto segue:

  1. Assicurati che il campionamento dei dati sia abilitato impostando il metodo Opzione enable_data_sampling. Consulta Attiva il campionamento dei dati.
  2. Assicurati di utilizzare Runner v2
  3. Assicurati che i worker abbiano avviato il lavoro. Il campionamento inizia solo dopo che dei worker.
  4. Assicurati che il job e i worker siano in stato integro.
  5. Controlla bene lo stato del progetto Quote di Cloud Storage. Se superi limiti di quota di Cloud Storage, Dataflow scrivere i dati di esempio.
  6. Il campionamento dei dati non può essere campionato da iterabili. Campioni di questi tipi Gli stream non sono disponibili.

Passaggi successivi