Imposta la modalità di inserimento in modalità flusso della pipeline

Dataflow supporta due modalità per i job di elaborazione in modalità flusso:

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

Scegliere la modalità di streaming da utilizzare

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

  • Pipeline con aggregazioni, come conteggio, somma o media.
  • Casi d'uso business-critical basati su record elaborati una volta e solo una volta. Gli esempi includono rilevamento delle frodi, rilevamento delle minacce di rete e dashboard dell'inventario di e-commerce.

Scegli la modalità di flusso almeno una volta se il tuo 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, le pipeline che scrivono in BigQuery o in un datastore SQL.
  • Pipeline solo per mappe senza aggregazioni. Alcuni esempi includono i job ETL di elaborazione dei log, Change Data Capture (CDC) o di estrazione, trasformazione e caricamento (ETL), 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 distribuzione "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à di flusso at-least-once.
  • Pipeline che leggono da Pub/Sub. La lettura da Pub/Sub è ottimizzata in modo significativo quando si utilizza la modalità at-least-once.

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. Esegui il test almeno una volta dei flussi di dati con carichi realistici per valutarne l'impatto.

  • Quando utilizzi la modalità at-least-once, la frequenza dei record duplicati dipende dal numero di nuovi tentativi. Il tasso di riferimento è generalmente basso (< 1%). Tuttavia, possono verificarsi picchi in caso di errore dei nodi worker o di altre condizioni che causano chiamate RPC ripetute.

  • La modalità di inserimento di flussi influisce sul modo in cui Streaming Engine elabora i record, ma non modifica la semantica dei connettori I/O. Ti consigliamo di allineare la semantica di I/O alla modalità di streaming. Ad esempio, se utilizzi la modalità di flusso at-least-once 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 di dati at-least-once.

  • Le trasformazioni a livello di elemento come Map non sono sempre idempotenti. Ad esempio, considera una funzione che riceve un messaggio a cui viene aggiunto il timestamp corrente. In questo caso, un record duplicato può produrre diversi output distinti. La modalità "at-least-once" potrebbe non essere appropriata per la pipeline in questione.

Impostare la modalità di streaming

L'elaborazione "exactly-once" è l'impostazione predefinita per tutti i job Dataflow. Per abilitare la modalità di streaming "at-least-once", 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à di flusso "exactly-once".

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

Per aggiornare la modalità di inserimento di flussi su un job in esecuzione, arresta il job esistente ed esegui un job di sostituzione. Per maggiori informazioni, consulta Avviare un job di sostituzione.

Selezionare la modalità di streaming per un modello

Per selezionare la modalità di inserimento di flussi quando esegui un modello di flusso di 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. In Modalità di streaming, selezionala. Se il modello supporta una sola modalità, questa opzione è disabilitata.

gcloud

Per abilitare la modalità at-least-once, imposta l'opzione streaming_mode_at_least_once nel flag additional-experiments:

--additional-experiments=streaming_mode_at_least_once

Per attivare 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 avrà una modalità di streaming determinata dai metadati del modello. Per scoprire di più, consulta Modelli personalizzati.

REST

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

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

Modelli personalizzati

Se crei un modello personalizzato che supporta l'elaborazione at-least-once, 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 dei metadati consentono agli utenti di selezionare la modalità di flusso durante il deployment del modello nella console Google Cloud. Il campo defaultStreamingMode è facoltativo e specifica la modalità di streaming predefinita per il modello. Se non specifichi defaultStreamingModeg e il modello supporta entrambe le modalità, la modalità "exactly-once" è quella predefinita.

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

Visualizza la modalità di inserimento in modalità flusso di un job

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

Vai a Job

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

Limitazioni

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

Prezzi

La modalità "At almeno una volta" utilizza sempre la fatturazione basata sulle risorse, in cui ti vengono addebitate le risorse totali utilizzate dal job.

Il costo per unità delle unità di calcolo di Streaming Engine è lo stesso indipendentemente dalla modalità di flusso. Tuttavia, nella maggior parte dei casi, una pipeline consuma molto meno risorse totali quando viene utilizzata la modalità atleast-once.

Passaggi successivi