Google PDE: Elaborazione di Flussi con Dataflow e Apache Beam — Guida allo studio

Fa parte della Google Professional Data Engineer — Guida allo studio. Esercitati con risposte verificate nel centro esami Google, oppure fai test cronometrati su ExamRoll.io.

Panoramica

L’elaborazione di flussi di dati su Google Cloud si basa sul modello di programmazione unificato di Apache Beam, eseguito dal runner Dataflow. Beam fornisce un’astrazione logica — pipeline di trasformazioni (transform) su PCollection — che disaccoppia il codice dai dettagli di esecuzione come parallelismo, scalabilità automatica (autoscaling) e tolleranza ai guasti (fault tolerance). Nello streaming, la correttezza dipende dalla semantica temporale (tempo dell’evento vs tempo di elaborazione), dalle finestre (fisse, a scorrimento, di sessione, globali), dai watermark, dai trigger e dalla gestione dei dati in ritardo. L’eccellenza operativa su Dataflow richiede il corretto dimensionamento dei worker, la giusta policy di autoscaling, la scelta dello streaming engine e dello shuffle, la progettazione di sink idempotenti, la gestione dei messaggi non recapitabili (dead-letter) e un’osservabilità robusta.

Modello Apache Beam e semantica temporale

Modalità di fallimento e compromessi:

Gestione di Dataflow per carichi di lavoro di streaming

Strategie di deployment, template e aggiornamento

undefined

undefined

Scenario di un problema pratico

NovaTrack Inc. ingerisce telemetria IoT globale da 50.000 sensori di temperatura e deve fornire aggregati a livello di minuto, persistere i dati grezzi e popolare una dashboard in tempo reale. Sono previsti messaggi malformati occasionali e consegne fuori ordine. La soluzione deve scalare automaticamente, rendere disponibili i record errati per l’ispezione e supportare aggiornamenti senza downtime.

Approccio:

  1. Ingestion e semantica temporale

    • Creare un topic Pub/Sub regionale e publisher per regione con gli attributi deviceId e eventTs (RFC3339). Abilitare le chiavi di ordinamento (ordering keys) per deviceId quando possibile.
    • Motivazione: Pub/Sub fornisce un punto di ingresso (ingress) durevole ed elastico con consegna at-least-once. Associare i timestamp degli eventi al punto di origine (at the edge) preserva il tempo effettivo dell’evento (event time); l’ordinamento per dispositivo riduce il riordinamento all’interno dello stesso dispositivo senza creare colli di bottiglia centrali.
  2. Pipeline di streaming Dataflow con finestre basate sull’event-time

    • Leggere da una sottoscrizione dedicata tramite PubSubIO, estraendo eventTs come timestamp di Beam, utilizzando come fallback il publishTime se mancante.
    • Applicare FixedWindows di 1 minuto con un trigger anticipato (early) a 30 secondi e attivazioni tardive (late) per ogni elemento in ritardo; impostare una latenza consentita (allowed lateness) di 10 minuti e l’accumulo dei riquadri (pane).
    • Motivazione: Le finestre basate sull’event-time assicurano aggregati al minuto accurati; le attivazioni anticipate alimentano la dashboard con una freschezza dei dati inferiore al minuto; le attivazioni tardive correggono gli aggregati man mano che arrivano i dati in ritardo. Il limite alla latenza (lateness bound) limita la dimensione dello stato e i costi.
  3. Validazione, arricchimento e routing dei messaggi non recapitabili (dead-letter)

    • Implementare un ParDo che esegue il parsing del JSON, valida lo schema e gli intervalli, e arricchisce i dati con piccole informazioni di riferimento statiche tramite un side input caricato da BigQuery all’avvio del job.
    • Usare TupleTags per emettere i record validi nell’output principale e gli errori in una PCollection dead-letter contenente payload, errore, deviceId e timestamp del parsing; scrivere la DLQ in una tabella BigQuery partizionata.
    • Motivazione: I side input mantengono i dati di riferimento in memoria per una bassa latenza. La cattura dei messaggi non recapitabili consente l’ispezione e la rielaborazione mirata delle righe errate senza bloccare il flusso principale.
  4. Aggregazione e mitigazione degli hot key

    • Raggruppare per deviceId e calcolare avg/min/max per minuto con CombineFns. Per le metriche regionali top-N, partizionare (shard) per regione#N per evitare hot key, quindi ri-aggregare.
    • Motivazione: I Combiner minimizzano il volume di dati dello shuffle e i costi; lo sharding delle chiavi previene colli di bottiglia su una singola chiave durante il fan-in regionale.
  5. Sink ed effetti exactly-once

    • Scrivere gli eventi grezzi validati e gli aggregati al minuto su BigQuery usando BigQueryIO con la Storage Write API. Impostare un ID di inserimento stabile basato su deviceId + eventTs per garantire l’idempotenza in caso di tentativi di riesecuzione personalizzati (retry).
    • Motivazione: La Storage Write API fornisce un’ingestion ad alta velocità (throughput) e bassa latenza con semantica exactly-once all’interno di uno stream. Gli ID stabili assicurano la deduplicazione a valle (downstream) in caso di riesecuzioni (replay).
  6. Strategia di coerenza per la dashboard

    • La dashboard interroga le tabelle aggregate partizionate con un intervallo di visualizzazione (lookback) di 2 minuti rispetto al watermark o un ritardo fisso di 2 volte la latenza di disponibilità osservata per i dati in streaming.
    • Motivazione: La visibilità dello streaming in BigQuery è eventually consistent; posticipare leggermente le letture evita di perdere righe in transito (in-flight) pur mantenendo un comportamento quasi in tempo reale.
  7. Operazioni: autoscaling e Streaming Engine

    • Abilitare lo Streaming Engine; impostare maxWorkers in base al picco previsto (es. 3 volte la media), selezionare un tipo di macchina dimensionato per operazioni di parsing e crittografia legate alla CPU (CPU-bound), e aumentare il disco di avvio per ospitare i dati di shuffle transitori.
    • Monitorare il ritardo del watermark (lag), i secondi di backlog, la CPU e il throughput per passo; impostare alert su ritardi prolungati e picchi nel tasso di messaggi DLQ.
    • Motivazione: Lo Streaming Engine esternalizza lo stato e lo shuffle per una maggiore elasticità e aggiornamenti più semplici; un corretto dimensionamento e monitoraggio prevengono violazioni silenziose degli SLO.
  8. Deployment e aggiornamenti con i Flex Templates

    • Impacchettare la pipeline come un Flex Template con parametri: sottoscrizione di input, tabelle di output, tabella DLQ, maxWorkers e regione. In caso di una modifica incompatibile, avviare la nuova pipeline sullo stesso topic con una nuova sottoscrizione, verificare gli output, quindi eseguire il drain del vecchio job. Opzionalmente, creare uno snapshot di Pub/Sub e posizionare la nuova sottoscrizione sullo snapshot per garantire zero perdite di dati.
    • Motivazione: I Flex Templates abilitano deployment ripetibili e parametrizzati. Un cutover blue/green verificato con drain garantisce zero perdita di dati e un downtime minimo.
  9. Rielaborazione e backfill batch

    • Archiviare file Avro compressi degli eventi grezzi in Cloud Storage tramite un output secondario; eseguire una pipeline Dataflow batch per eseguire il backfill o rielaborare i dati in BigQuery quando i modelli o gli schemi cambiano.
    • Motivazione: Archivi durevoli dei dati grezzi supportano la riproducibilità e l’evoluzione dello schema senza impattare il percorso critico (hot path).

Questo design produce aggregati corretti a bassa latenza con costi limitati, un chiaro isolamento degli errori, forte osservabilità e percorsi di aggiornamento sicuri, gestendo al contempo dati fuori ordine e in ritardo su scala globale.


Analisi con BigQuery e Ingegneria del Data Warehouse · Tutti i domini · Messaggistica

Esercitati su queste domande → · Pratica cronometrata su ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Supera l'esame →

Sfoglia Google →

Related guides

Accesso tutto incluso

Un abbonamento. Ogni esame.

Ogni piano sblocca la ricerca illimitata di risposte, test pratici, spiegazioni AI e la libreria completa di risorse — in oltre 20 lingue.

Mensile
24.87
Just €0.83/day
Tutto incluso:
  • Ricerca risposte illimitata
  • Test pratici illimitati
  • Spiegazioni basate su AI
  • Libreria completa di risorse
  • Oltre 20 lingue
  • Aggiornamenti settimanali dei contenuti
  • Premi e referral
  • Supporto prioritario
Inizia la prova gratuita

Nessuna carta di credito richiesta*

Miglior valore
12 mesi
179.87
Just €0.49/daySave 40%
Tutto incluso:
  • Ricerca risposte illimitata
  • Test pratici illimitati
  • Spiegazioni basate su AI
  • Libreria completa di risorse
  • Oltre 20 lingue
  • Aggiornamenti settimanali dei contenuti
  • Premi e referral
  • Supporto prioritario
Inizia la prova gratuita

Nessuna carta di credito richiesta*

✓ Piano gratuito incluso · ✓ Annulla in qualsiasi momento · ✓ Tutti i piani sbloccano il prodotto completo