Imposta la modalità flusso di dati della pipeline

Dataflow supporta due modalità per i job di flussi:

  • Modalità esattamente una volta. Questa modalità è predefinita per tutti i job di streaming di Dataflow. In questa modalità, Dataflow garantisce che i record non vengano eliminati o duplicati durante il passaggio dei dati nella pipeline.
  • Modalità "almeno una volta". Questa modalità garantisce che i record vengano elaborati almeno una volta (ovvero, nessun record di input viene perso). Tuttavia, i record duplicati possibili in questa modalità. Per i casi d'uso che possono tollerare i duplicati, la modalità Almeno una volta può ridurre notevolmente il costo e la latenza del job.

Scegliere la modalità flusso di dati da utilizzare

Scegli la modalità esattamente una volta se devi assicurarti 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 sola volta e solo una volta sola. Alcuni esempi sono il rilevamento di frodi, il rilevamento delle minacce di rete e dashboard di e-commerce sull'inventario.

Scegli la modalità di streaming almeno una volta se il tuo carico di lavoro può tollerare record duplicati e potrebbe trarre vantaggio da costi o latenze ridotti. Ad esempio:

  • Carichi di lavoro in cui viene eseguita la deduplicazione downstream e Dataflow. Ad esempio, le pipeline che scrivono BigQuery o un datastore SQL.
  • Pipeline solo mappa senza aggregazioni. Alcuni esempi sono l'elaborazione dei log, la cattura dei dati sulle modifiche o i job ETL (estrazione, trasformazione e caricamento), 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", come come Pub/Sub. In questo caso, la deduplica all'interno della pipeline potrebbe essere unnecessary e puoi trarre vantaggio dal costo e dalla latenza ridotti della modalità di streaming almeno una volta.
  • Pipeline che leggono da Pub/Sub. La lettura da Pub/Sub è ottimizzata in modo significativo se si utilizza la modalità almeno una volta.

Ulteriori considerazioni

  • La modalità Almeno una volta può ridurre notevolmente il costo e la latenza di una pipeline. L'impatto esatto dipende dalle specifiche della pipeline. Testa lo streaming almeno una volta con carichi realistici per valutare l'impatto.

  • Quando utilizzi la modalità Almeno una volta, la percentuale di record duplicati dipende dal numero di tentativi. In genere, il tasso di riferimento è basso (<1%). Tuttavia, possono verificarsi picchi se i nodi di lavoro non funzionano o se altre condizioni causano chiamate RPC ripetute.

  • La modalità di streaming influisce sul modo in cui Streaming Engine elabora i record, ma non cambia la semantica dei connettori di I/O. È consigliabile allineare la semantica I/O alla modalità di streaming. Ad esempio, se utilizzi almeno una volta modalità flusso di dati con 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 lo streaming 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 aggiunge il timestamp corrente che le sono assegnati. 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à di streaming

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

Java

--dataflowServiceOptions=streaming_mode_at_least_once

Python

--dataflow_service_options=streaming_mode_at_least_once

Vai

--dataflow_service_options=streaming_mode_at_least_once

Se non specifichi l'opzione streaming_mode_at_least_once, Dataflow utilizza la modalità di streaming esattamente una volta.

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 streaming di un job in esecuzione, interrompi il job esistente ed esegui un job di sostituzione. Per ulteriori informazioni, vedi Avvia un job di sostituzione.

Selezionare la modalità di streaming per un modello

Per selezionare la modalità di streaming quando esegui un modello di streaming Dataflow:

Console

  1. Nella console Google Cloud, vai ai 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 di flusso di dati.

  4. Per Modalità di streaming, seleziona la modalità di streaming. Se il modello supporta solo una 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 attivare la modalità esattamente una volta, 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 , il modello seleziona per impostazione predefinita una modalità flusso di dati determinata i metadati del modello. Per ulteriori informazioni, 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 almeno una volta, aggiungi i seguenti campi di primo livello al file dei 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 streaming 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à esattamente una volta è predefinita.

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

Visualizza la modalità flusso di dati di un job

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

Vai a Job

La modalità flusso di dati è indicata anche nella pagina dei dettagli del job, nella sezione Job il riquadro delle informazioni.

Limitazioni

La modalità flusso di dati Almeno una volta richiede Streaming Engine con fatturazione basata sulle risorse.

Prezzi

La modalità Almeno una volta utilizza sempre la fatturazione in base alle risorse, per cui ti vengono addebitate le risorse totali consumate dal job.

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

Passaggi successivi