Dataflow è un Google Cloud servizio che fornisce l'elaborazione unificata dei dati in modalità flusso e batch su larga scala. Utilizza Dataflow per creare pipeline di dati che leggono da una o più origini, trasformano i dati e scrivono i dati in una destinazione.
I casi d'uso tipici per Dataflow includono:
- Spostamento dei dati: importazione o replica dei dati tra i sottosistemi.
- ETL ETL (estrazione, trasformazione e caricamento) che importano i dati in un data warehouse come BigQuery.
- Supporto di backend per le dashboard di business intelligence (BI).
- Analisi di machine learning (ML) in tempo reale dei flussi di dati.
- Elaborazione dei dati dei sensori o dei dati di log su larga scala.
Dataflow utilizza lo stesso modello di programmazione sia per l'analisi batch che per l'analisi dei flussi. Le pipeline di streaming possono ottenere una bassa latenza. Puoi importare, elaborare e analizzare volumi variabili di dati in tempo reale. Per impostazione predefinita, Dataflow fornisce l'elaborazione esatta una volta di ogni record. Per le pipeline di streaming che possono accettare i duplicati, puoi ridurre i costi e migliorare la latenza attivando la modalità "Almeno una volta".
Vantaggi dell'elaborazione dei dati con Dataflow
Questa sezione descrive alcuni dei vantaggi dell'utilizzo di Dataflow.
Elaborazione dei dati gestita
Dataflow è un servizio completamente gestito. Ciò significa che Google gestisce tutte le risorse necessarie per eseguire Dataflow. Quando esegui un job Dataflow, il servizio Dataflow alloca un pool di VM worker per eseguire la pipeline. Non è necessario eseguire il provisioning o la gestione di queste VM. Al termine o all'annullamento del job, Dataflow elimina automaticamente le VM. Ti vengono addebitati i costi per le risorse di calcolo utilizzate dal job. Per ulteriori informazioni sui costi, consulta Prezzi di Dataflow.
Pipeline di dati scalabili
Dataflow è progettato per supportare pipeline batch e di streaming su larga scala. I dati vengono elaborati in parallelo, quindi il lavoro viene distribuito su più VM.
Dataflow può eseguire la scalabilità automatica mediante il provisioning di VM worker aggiuntive o l'arresto di alcune VM worker se ne sono necessarie meno. Ottimizza anche il lavoro in base alle caratteristiche della pipeline. Ad esempio, Dataflow può ribilanciare dinamicamente il lavoro tra le VM, in modo che il lavoro parallelo venga completato in modo più efficiente.
Portabilità con Apache Beam
Dataflow è basato sul progetto open source Apache Beam. Apache Beam consente di scrivere pipeline utilizzando un SDK specifico per il linguaggio. Apache Beam supporta gli SDK Java, Python e Go, nonché le pipeline multilingue.
Dataflow esegue le pipeline Apache Beam. Se in un secondo momento decidi di eseguire la pipeline su un'altra piattaforma, come Apache Flink o Apache Spark, puoi farlo senza riscrivere il codice della pipeline.
Sviluppo flessibile di pipeline di dati
Puoi utilizzare Dataflow per le pipeline con casi d'uso semplici, ad esempio solo per spostare i dati. Tuttavia, Dataflow è adatto anche per applicazioni più avanzate, come l'analisi dei flussi in tempo reale. Una soluzione basata su Dataflow può crescere in base alle tue esigenze man mano che passi dal batch allo streaming o incontri casi d'uso più avanzati.
Dataflow supporta diversi modi per creare ed eseguire pipeline, a seconda delle tue esigenze:
Scrivi codice utilizzando gli SDK Apache Beam.
Esegui il deployment di un modello Dataflow. I modelli consentono di eseguire pipeline predefinite. Ad esempio, uno sviluppatore può creare un modello e un data scientist può eseguirne il deployment on demand.
Google fornisce anche una libreria di modelli per scenari comuni. Puoi eseguire il deployment di questi modelli senza conoscere i concetti di programmazione di Apache Beam.
Utilizza i notebook JupyterLab per sviluppare ed eseguire le pipeline in modo iterativo.
Job della pipeline di dati osservabili
Puoi monitorare lo stato dei job Dataflow tramite l' interfaccia di monitoraggio di Dataflow nella Google Cloud console. L'interfaccia di monitoraggio include una rappresentazione grafica della pipeline, che mostra l'avanzamento e i dettagli di esecuzione di ogni fase della pipeline. L'interfaccia di monitoraggio semplifica l'individuazione di problemi come colli di bottiglia o latenza elevata. Puoi anche profilare i job Dataflow per monitorare l'utilizzo della CPU e l'allocazione della memoria.
Come funzionano le pipeline di dati per l'elaborazione di flussi e batch
Dataflow utilizza un modello di pipeline di dati, in cui i dati si spostano attraverso una serie di fasi. Le fasi possono includere la lettura dei dati da un'origine, la trasformazione e l'aggregazione dei dati e la scrittura dei risultati in una destinazione.
Le pipeline possono variare dall'elaborazione molto semplice a quella più complessa. Ad esempio, una pipeline potrebbe eseguire le seguenti operazioni:
- Sposta i dati così come sono in una destinazione.
- Trasforma i dati in modo che siano più utilizzabili dal sistema di destinazione.
- Aggrega, elabora e arricchisci i dati per l'analisi.
- Unisci i dati con altri dati.
Una pipeline definita in Apache Beam non specifica come viene eseguita la pipeline. L'esecuzione della pipeline è il compito di un runner. Lo scopo di un runner è eseguire una pipeline Apache Beam su una piattaforma specifica. Apache Beam supporta più runner, incluso un runner Dataflow.
Per utilizzare Dataflow con le pipeline Apache Beam, specifica il runner Dataflow. Il runner carica il codice eseguibile e le dipendenze in un bucket Cloud Storage e crea un job Dataflow. Dataflow alloca quindi un pool di VM per eseguire la pipeline.
Il seguente diagramma mostra una tipica soluzione ETL e BI che utilizza Dataflow e altri Google Cloud servizi:

Questo diagramma mostra le seguenti fasi:
- Pub/Sub importa i dati da un sistema esterno.
- Dataflow legge i dati da Pub/Sub e li scrive in BigQuery. Durante questa fase, Dataflow potrebbe trasformare o aggregare i dati.
- BigQuery funge da data warehouse, consentendo agli analisti di dati di eseguire query ad hoc sui dati.
- Looker fornisce informazioni di BI in tempo reale dai dati archiviati in BigQuery.
Per gli scenari di spostamento dei dati di base, puoi eseguire un modello fornito da Google. Alcuni modelli supportano le funzioni definite dall'utente (UDF) scritte in JavaScript. Le UDF consentono di aggiungere una logica di elaborazione personalizzata a un modello. Per le pipeline più complesse, inizia con l'SDK Apache Beam.
Passaggi successivi
- Per ulteriori informazioni su Apache Beam, consulta Modello di programmazione per Apache Beam.
- Crea la tua prima pipeline seguendo la guida rapida di Job Builder o la guida rapida del modello Dataflow.
- Scopri come utilizzare Apache Beam per creare pipeline.