Imposta la modalità flusso di dati della pipeline

Dataflow supporta due modalità per i job di flussi:

  • Modalità "exactly-once". Questa è la modalità predefinita per tutti i job di flussi di dati Dataflow. In questa modalità, Dataflow garantisce che i record non vengano eliminati o duplicati durante il trasferimento dei dati attraverso la pipeline.
  • Modalità Almeno una volta. Questa modalità garantisce che i record vengano elaborati almeno una volta (ovvero, nessun record di input persi). Tuttavia, in questa modalità sono possibili record duplicati. Per i casi d'uso che tollerano i duplicati, la modalità "at-least-once" può ridurre significativamente i costi e la latenza del job.

Scegliere la modalità flusso di dati da utilizzare

Scegli la modalità "exactly-once" se devi garantire risultati esatti dalla pipeline e una semantica prevedibile. Ad esempio:

  • Pipeline con aggregazioni, come conteggio, somma o media.
  • Casi d'uso business-critical che si basano su record elaborati una volta e una sola volta. Alcuni esempi sono il rilevamento di frodi, il rilevamento delle minacce di rete e le dashboard di inventario per l'e-commerce.

Scegli la modalità flusso di dati "Almeno una volta" se il carico di lavoro può tollerare record duplicati e potrebbe trarre vantaggio da costi o latenza ridotti. Ad esempio:

  • Carichi di lavoro in cui la deduplicazione viene eseguita a valle di Dataflow. ad esempio pipeline che scrivono in BigQuery o in un datastore SQL.
  • Pipeline solo mappa senza aggregazioni. Alcuni esempi sono l'elaborazione dei log, la Change Data Capture (CDC) o i job ETL (Extract, Transform, Load), in cui la pipeline esegue solo trasformazioni per elemento, come la traduzione dello schema.
  • Pipeline in cui il sink di output non può garantire la consegna "exactly-once", ad esempio Pub/Sub. In questo caso, la deduplicazione all'interno della pipeline potrebbe non essere necessaria e potresti trarre vantaggio dai costi e dalla latenza ridotti della modalità flusso di dati Almeno una volta.
  • Pipeline che leggono da Pub/Sub. La lettura da Pub/Sub è ottimizzata in modo significativo quando si utilizza la modalità "Almeno una volta".

Ulteriori considerazioni

  • La modalità "at-least-once" può ridurre significativamente i costi e la latenza di una pipeline. L'impatto esatto dipende dalle specifiche della pipeline. Testa i flussi di dati almeno una volta con carichi realistici per valutarne l'impatto.

  • Quando utilizzi la modalità "Almeno una volta", la frequenza di record duplicati dipende dal numero di nuovi tentativi. La percentuale di riferimento è in genere bassa (< 1%). Tuttavia, possono verificarsi picchi in caso di errore dei nodi worker o se altre condizioni causano chiamate RPC ripetute.

  • La modalità flusso di dati influisce sul modo in cui Streaming Engine elabora i record, ma non modifica la semantica dei connettori I/O. È consigliabile allineare la semantica di I/O alla modalità flusso di dati. Ad esempio, se utilizzi la modalità di flusso "Almeno una volta" con il connettore BigQuery I/O, imposta la modalità di scrittura su STORAGE_API_AT_LEAST_ONCE. I modelli Dataflow forniti da Google attivano automaticamente questa opzione quando utilizzi il flusso "Almeno una volta".

  • Le trasformazioni a livello di elemento, come Map, non sono sempre idempotenti. Ad esempio, considera una funzione che riceve un messaggio e vi aggiunge il timestamp attuale. In questo caso, un record duplicato può produrre diversi output distinti. La modalità "Almeno una volta" potrebbe non essere appropriata per quella pipeline.

Impostare la modalità flusso di dati

L'elaborazione "exactly-once" è l'impostazione predefinita per tutti i job Dataflow. Per abilitare la modalità flusso di dati "Almeno una volta", imposta l'streaming_mode_at_least_once opzione di servizio.

Java

--dataflowServiceOptions=streaming_mode_at_least_once

Python

--dataflow_service_options=streaming_mode_at_least_once

Go

--dataflow_service_options=streaming_mode_at_least_once

Se non specifichi l'opzione streaming_mode_at_least_once, Dataflow utilizza la modalità flusso "exactly-once".

Se imposti l'opzione streaming_mode_at_least_once, Dataflow abilita automaticamente Streaming Engine con la fatturazione basata sulle risorse.

Per aggiornare la modalità flusso di dati su un job in esecuzione, arresta il job esistente ed esegui un job di sostituzione. Per ulteriori informazioni, consulta Avviare un job sostitutivo.

Seleziona la modalità flusso di dati per un modello

Per selezionare la modalità flusso di dati quando esegui un modello di flusso Dataflow, segui questi passaggi:

Console

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

    Vai a Job

  2. Fai clic su Crea job da modello.

  3. Seleziona il modello da eseguire dal menu a discesa Modello Dataflow.

  4. Per Modalità flusso di dati, seleziona la modalità flusso. Se il modello supporta una sola modalità, questa opzione è disattivata.

gcloud

Per attivare la modalità "Almeno una volta", imposta l'opzione streaming_mode_at_least_once nel flag additional-experiments:

--additional-experiments=streaming_mode_at_least_once

Per abilitare la modalità "exactly-once", imposta l'opzione streaming_mode_exactly_once nel flag additional-experiments:

--additional-experiments=streaming_mode_exactly_once

Queste due opzioni si escludono a vicenda. Se non imposti una di queste opzioni, per impostazione predefinita il modello utilizza una modalità flusso di dati determinata dai metadati del modello. Per ulteriori informazioni, consulta Modelli personalizzati.

REST

Utilizza il campo additionalExperiments nell'oggetto FlexTemplateRuntimeEnvironment (modelli Flex) o RuntimeEnvironment (modelli classici).

{
  additionalExperiments : ["streaming_mode_at_least_once"]
  ...
}

Modelli personalizzati

Se crei un modello personalizzato che supporta l'elaborazione "Almeno una volta", aggiungi i seguenti campi di primo livello al file di metadati del modello:

{
  "streaming": true,
  "supportsAtLeastOnce": true,
  "supportsExactlyOnce": true,
  "defaultStreamingMode": "AT_LEAST_ONCE"
}

Questi campi di metadati consentono agli utenti di selezionare la modalità flusso di dati durante il deployment del modello nella console Google Cloud. Il campo defaultStreamingMode è facoltativo e specifica la modalità flusso di dati predefinita per il modello. Se non specifichi defaultStreamingModeg e il modello supporta entrambe le modalità, la modalità "exactly-once" è l'impostazione predefinita.

Per ulteriori informazioni, consulta le seguenti sezioni nella documentazione dei modelli Dataflow:

Visualizza la modalità flusso di dati di un job

Per visualizzare la modalità flusso di dati per un job, vai alla pagina Job nella console Google Cloud.

Vai a Job

La modalità flusso di dati è elencata anche nella pagina dei dettagli del job, nel riquadro Informazioni job.

Limitazioni

La modalità flusso di dati "at-least-once" richiede Streaming Engine con fatturazione basata sulle risorse.

Prezzi

La modalità "at-least-once" utilizza sempre la fatturazione basata sulle risorse, in cui ti vengono addebitate le risorse totali consumate dal job.

Il costo per unità delle unità di calcolo di Streaming Engine è lo stesso indipendentemente dalla modalità flusso di dati. Tuttavia, nella maggior parte dei casi, una pipeline consuma significativamente meno risorse totali quando si utilizza la modalità "Almeno una volta".

Passaggi successivi