Utilizzare il campionamento dei dati per osservare i dati della pipeline

Il campionamento dei dati ti consente di osservare i dati in ogni passaggio di una pipeline Dataflow. Queste informazioni possono aiutarti a eseguire il debug dei problemi relativi alla pipeline, mostrando gli input e gli output effettivi in un job in esecuzione o completato.

Ecco alcuni utilizzi del campionamento dei dati:

  • Durante lo sviluppo, puoi vedere quali elementi vengono prodotti in tutta la pipeline.

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

  • Durante il debug, visualizza gli output delle trasformazioni per assicurarti che siano corretti.

  • Comprendi il comportamento di una pipeline senza dover esaminare il codice della pipeline.

  • Visualizza gli elementi campionati in un secondo momento, al termine del job, o 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 problemi di runtime come i tasti di scelta rapida o l'output errato. Per ulteriori informazioni, consulta Utilizzare 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 i sample per vedere i dati in fase di elaborazione al momento dell'eccezione. Il sampling delle eccezioni è attivo per impostazione predefinita e può essere disattivato. Per ulteriori informazioni, consulta la sezione Utilizzare il campionamento delle eccezioni in questo documento.

Dataflow scrive gli elementi campionati nel percorso Cloud Storage specificato dall'opzione della pipeline temp_location. Puoi visualizzare i dati campionati nella console Google Cloud o esaminare i file di dati non elaborati in Cloud Storage. I file rimangono in Cloud Storage finché non li elimini.

Il campionamento dei dati viene eseguito dai worker di Dataflow. Il campionamento avviene con il criterio del massimo impegno. I campioni potrebbero essere eliminati se si verificano errori temporanei.

Requisiti

Per utilizzare il campionamento dei dati, devi attivare Runner v2. Per ulteriori informazioni, consulta Abilitare Dataflow Runner v2.

Per visualizzare i dati campionati nella console Google Cloud, devi disporre delle seguenti autorizzazioni Identity and Access Management:

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

Il campionamento periodico richiede il seguente SDK Apache Beam:

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

Il campionamento delle eccezioni richiede il seguente SDK Apache Beam:

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

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

Utilizzare il campionamento dei dati periodico

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

Attiva il campionamento periodico dei dati

Il campionamento periodico è disattivato per impostazione predefinita. Per attivarla, imposta la seguente opzione di pipeline:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Vai

--experiments=enable_data_sampling

Puoi impostare l'opzione a livello di programmazione o utilizzando la riga di comando. Per ulteriori informazioni, consulta Impostare le opzioni della pipeline sperimentale.

Quando esegui un modello Dataflow, utilizza il flag additional-experiments per attivare 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 un campione ogni 30 secondi.

A seconda del volume di dati, il campionamento periodico dei dati può comportare un significativo sovraccarico delle prestazioni. Pertanto, ti consigliamo di attivare il campionamento periodico solo durante i test e di disattivarlo per i carichi di lavoro di produzione.

Visualizzare i dati campionati

Per visualizzare i dati campionati nella console Google Cloud, svolgi i seguenti passaggi:

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job

  2. Seleziona un job.

  3. Fai clic su nel 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 PCollection, i dati campionati vengono visualizzati nella scheda. Per ogni sample, la scheda mostra la data di creazione e l'elemento di output. L'elemento di output è una rappresentazione serializzata dell'elemento della raccolta, inclusi i dati dell'elemento, il timestamp e le informazioni su finestra e riquadro.

Gli esempi seguenti mostrano gli 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 sia l'elemento di input correlato. Il campionamento delle eccezioni è attivo per impostazione predefinita quando utilizzi un SDK Apache Beam supportato.

Visualizza le eccezioni

Per visualizzare un'eccezione:

  1. Nella console Google Cloud, vai alla pagina 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. Non esiste un elemento di output per un'eccezione. La colonna Elemento di output contiene invece il messaggio Failed to process input element: INPUT_ELEMENT, dove INPUT_ELEMENT è l'elemento di input correlato.

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

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

Eccezione campionata nella console Google Cloud

Disattiva il campionamento delle eccezioni

Per disattivare 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 a livello di programmazione o utilizzando la riga di comando. Per ulteriori informazioni, consulta Impostare le opzioni della pipeline sperimentale.

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

--additional-experiments=disable_always_on_exception_sampling

Considerazioni sulla sicurezza

Dataflow scrive i dati campionati in un bucket Cloud Storage che crei e gestisci da te. 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 singoli campi nel tipo di dati PCollection, in modo che il valore non elaborato non venga visualizzato nei dati campionati:

  • Python: sostituisci il metodo __repr__ o __str__.
  • Java: sostituisci il metodo toString.

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

Fatturazione

Quando Dataflow esegue il campionamento dei dati, ti viene addebitato il costo per l'archiviazione dei dati di Cloud Storage e per le operazioni di lettura e scrittura su Cloud Storage. Per maggiori informazioni, consulta la pagina Prezzi di Cloud Storage.

Ogni worker Dataflow scrive i campioni in batch, con un'operazione di lettura e un'operazione di scrittura per batch.

Risoluzione dei problemi

Questa sezione contiene informazioni sui problemi comuni relativi all'utilizzo del campionamento dei dati.

Errore di autorizzazioni

Se non disponi dell'autorizzazione per visualizzare i campioni, la console Google Cloud mostra il seguente errore:

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

Per risolvere questo errore, verifica di disporre delle autorizzazioni IAM richieste. Se l'errore si verifica ancora, potresti essere soggetto a un criterio di negazione IAM.

Non vedo nessun Sample

Se non vedi nessun Sample, controlla quanto segue:

  1. Assicurati che il campionamento dei dati sia abilitato impostando l'opzione enable_data_sampling. Consulta Attivare il campionamento dei dati.
  2. Assicurati di utilizzare Runner v2
  3. Assicurati che i worker siano stati avviati. Il campionamento non inizia finché non vengono avviati i worker.
  4. Assicurati che il job e i worker siano in uno stato corretto.
  5. Controlla le quote di Cloud Storage del progetto. Se superi i limiti di quota di Cloud Storage, Dataflow non può scrivere i dati di esempio.
  6. Il campionamento dei dati non può essere eseguito da elementi iterabili. Gli esempi di questi tipi di streaming non sono disponibili.

Passaggi successivi