Dataflow è un servizio Google Cloud 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 li scrivono in una destinazione.
Ecco alcuni casi d'uso tipici per Dataflow:
- Spostamento dei dati: importazione o replica dei dati tra sottosistemi.
- Workflow ETL (estrazione, trasformazione e caricamento) che importano i dati in un data warehouse come BigQuery.
- Alimentazione delle dashboard di BI.
- Applicazione del ML in tempo reale ai dati in streaming.
- Elaborazione su larga scala dei dati dei sensori o dei log.
Dataflow utilizza lo stesso modello di programmazione sia per l'analisi in batch che per quella in streaming. Le pipeline in modalità flusso possono raggiungere una latenza molto bassa. Puoi importare, elaborare e analizzare volumi variabili di dati in tempo reale. Per impostazione predefinita, Dataflow garantisce l'elaborazione exactly-once di ogni record. Per le pipeline di streaming che possono tollerare i duplicati, spesso puoi ridurre i costi e migliorare la latenza attivando la modalità almeno una volta.
Vantaggi di Dataflow
Questa sezione descrive alcuni dei vantaggi dell'utilizzo di Dataflow.
Gestito
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 gestire queste VM. Al termine o all'annullamento del job, Dataflow elimina automaticamente le VM. Ti vengono addebitate le risorse di calcolo utilizzate dal tuo job. Per ulteriori informazioni sui costi, consulta Prezzi di Dataflow.
Scalabile
Dataflow è progettato per supportare le pipeline in batch e in streaming su larga scala. I dati vengono elaborati in parallelo, quindi il lavoro viene distribuito su più VM.
Dataflow può eseguire la scalabilità automatica eseguendo il provisioning di VM worker aggiuntive o interrompendo alcune VM worker se ne sono necessarie meno. Inoltre, ottimizza il lavoro in base alle caratteristiche della pipeline. Ad esempio, Dataflow può riequilibrare dinamicamente il lavoro tra le VM, in modo che il lavoro parallelo venga completato in modo più efficiente.
Portabile
Dataflow è basato sul progetto open source Apache Beam. Apache Beam ti consente di scrivere pipeline utilizzando un SDK specifico per il linguaggio. Apache Beam supporta gli SDK Java, Python e Go, nonché pipeline multilingue.
Dataflow esegue le pipeline Apache Beam. Se in un secondo momento decidi di eseguire la pipeline su una piattaforma diversa, ad esempio Apache Flink o Apache Spark, puoi farlo senza riscrivere il codice della pipeline.
Flessibile
Puoi utilizzare Dataflow per pipeline relativamente semplici, ad esempio per spostare i dati. Tuttavia, è adatto anche per applicazioni più avanzate, come le analisi in tempo reale dello streaming. Una soluzione basata su Dataflow può crescere in base alle tue esigenze man mano che passi dal batch allo streaming o quando utilizzi casi d'uso più avanzati.
Dataflow supporta diversi modi per creare ed eseguire le pipeline, a seconda delle tue esigenze:
Scrivi codice utilizzando gli SDK Apache Beam.
Esegui il deployment di un modello Dataflow. I modelli ti consentono di eseguire pipeline predefinite. Ad esempio, uno sviluppatore può creare un modello, che un data scientist può implementare su richiesta.
Google fornisce inoltre 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.
Observable
Puoi monitorare lo stato dei job Dataflow tramite l'interfaccia di monitoraggio di Dataflow nella console Google Cloud. 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 il rilevamento di problemi come i colli di bottiglia o la latenza elevata. Puoi anche profilare i tuoi job Dataflow per monitorare l'utilizzo della CPU e l'allocazione della memoria.
Come funziona
Dataflow utilizza un modello di pipeline di dati, in cui i dati passano attraverso una serie di fasi. Le fasi possono includere la lettura dei dati da un'origine, la loro trasformazione e aggregazione e la scrittura dei risultati in una destinazione.
Le pipeline possono variare da un'elaborazione molto semplice a una più complessa. Ad esempio, una pipeline potrebbe fare quanto segue:
- Sposta i dati così come sono in una destinazione.
- Trasforma i dati in modo che siano più utilizzabili dal sistema di destinazione.
- Aggregare, elaborare e arricchire i dati per l'analisi.
- Unisci i dati con altri dati.
Una pipeline definita in Apache Beam non specifica come viene eseguita. L'esecuzione della pipeline è compito di un runner. Lo scopo di un runner è eseguire una pipeline Apache Beam su una piattaforma specifica. Apache Beam supporta più runner, tra cui un runner Dataflow.
Per utilizzare Dataflow con le pipeline Apache Beam, specifica il runner Dataflow. Il runner carica il codice e le dipendenze eseguibili 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 servizi Google Cloud:
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 e consente agli analisti di eseguire query ad hoc sui dati.
- Looker fornisce approfondimenti di BI in tempo reale dai dati archiviati in BigQuery.
Per scenari di spostamento di dati di base, puoi eseguire un modello fornito da Google. Alcuni modelli supportano le funzioni definite dall'utente (UDF) scritte in JavaScript. Le funzioni personalizzate ti consentono di aggiungere una logica di elaborazione personalizzata a un modello. Per pipeline più complesse, inizia con l'SDK Apache Beam.
Passaggi successivi
- Per ulteriori informazioni su Apache Beam, consulta Modello di programmazione per Apache Beam.
- Installa l'SDK Apache Beam.
- Crea la tua prima pipeline seguendo la guida rapida Java, la guida rapida Python o la guida rapida Go.
- Scopri di più sui modelli Dataflow creando una pipeline di inserimento flussi utilizzando un modello Dataflow.