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 Job di flussi di dati Dataflow. In questa modalità, Dataflow garantisce che i record non vengano eliminati o duplicati durante il trasferimento dei dati della 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 tollerano i duplicati, 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 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à flusso di dati "Almeno una volta" se il tuo carico di lavoro può tollerare la duplicazione e potrebbero trarre vantaggio da costi o latenza 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 includono l'elaborazione dei log, Change Data Capture (CDC) o job ETL (Extract, Transform and Load), in cui la pipeline esegue solo trasformazioni per singolo 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 deduplicazione all'interno della pipeline potrebbe inutili e potrai beneficiare della latenza e dei costi ridotti modalità flusso di dati "at-least-once".
  • Pipeline che leggono da Pub/Sub. La lettura da Pub/Sub è 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 una pipeline o un blocco note personalizzato. L'impatto esatto dipende dalle specifiche della pipeline. Testa trasmettere in streaming almeno una volta con carichi realistici per valutarne l'impatto.

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

  • La modalità flusso di dati influisce sul modo in cui Streaming Engine elabora i record, ma non modificare la semantica dei connettori I/O. È consigliabile allineare la semantica di I/O con la modalità flusso di dati. 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. Modelli Dataflow forniti da Google abilita automaticamente questa opzione quando usi 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à flusso di dati

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à flusso di dati "exactly-once".

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

Per aggiornare la modalità flusso di dati su un job in esecuzione, arresta il job esistente ed esegui un un lavoro di sostituzione. Per ulteriori informazioni, vedi Avvia un job di sostituzione.

Seleziona la modalità flusso di dati per un modello

selezionare la modalità flusso di dati quando esegui un flusso di dati Dataflow. segui questi passaggi:

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 che desideri eseguire 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 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 , il modello seleziona per impostazione predefinita una modalità flusso di dati determinata i metadati del modello. Per ulteriori informazioni, vedi Modelli personalizzati.

REST

Utilizza il campo additionalExperiments nella 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 il metodo seguenti campi di primo livello al file dei 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 il modello nella console Google Cloud. Il campo defaultStreamingMode è facoltativo e specifica la modalità flusso di dati predefinita per il modello. Se non specificare defaultStreamingModeg e il modello supporta entrambe le modalità, quindi la modalità "exactly-once" è l'impostazione 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à flusso di dati per un job, vai alla pagina Job nella 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 fatturazione basata sulle risorse, in cui ti vengono addebitate le risorse totali utilizzate dal job.

Il costo per unità Unità di calcolo di Streaming Engine è 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