I modelli Dataflow consentono di pacchettizzare una pipeline Dataflow per il deployment. Chiunque disponga delle autorizzazioni corrette può quindi utilizzare il modello per eseguire il deployment della pipeline in pacchetto. Puoi creare i tuoi modelli Dataflow personalizzati, mentre Google fornisce modelli predefiniti per scenari comuni.
Vantaggi
I modelli presentano diversi vantaggi rispetto al deployment diretto di una pipeline in Dataflow:
- I modelli separano la progettazione della pipeline dal deployment. Ad esempio, uno sviluppatore può creare un modello e un data scientist può eseguire il deployment del modello in un secondo momento.
- I modelli possono avere parametri che consentono di personalizzare la pipeline quando esegui il deployment del modello.
- Puoi eseguire il deployment di un modello utilizzando la console Google Cloud, Google Cloud CLI o chiamate API REST. Non è necessario un ambiente di sviluppo o alcuna dipendenza della pipeline installata sulla macchina locale.
- Un modello è un artefatto di codice che può essere archiviato in un repository di controllo del codice sorgente e utilizzato nelle pipeline di integrazione continua (CI/CD).
Modelli forniti da Google
Google offre una varietà di modelli Dataflow open source predefiniti che puoi utilizzare per scenari comuni. Per maggiori informazioni sui modelli disponibili, consulta Modelli forniti da Google.
Confronta i modelli Flex e i modelli classici
Dataflow supporta due tipi di modelli: i modelli flessibili, più recenti, e i modelli classici. Se stai creando un nuovo modello Dataflow, ti consigliamo di farlo come modello flessibile.
Con un modello flessibile, la pipeline viene pacchettizzata come immagine Docker in Artifact Registry, insieme a un file di specifica del modello in Cloud Storage. La specifica del modello contiene un puntatore all'immagine Docker. Quando esegui il modello, il servizio Dataflow avvia una VM di avvio, estrae l'immagine Docker ed esegue la pipeline. Il grafico di esecuzione viene creato dinamicamente in base ai parametri di runtime forniti dall'utente. Per utilizzare l'API per avviare un job che utilizza un modello flessibile, usa il metodo projects.locations.flexTemplates.launch
.
Un modello classico contiene la serializzazione JSON di un grafico del job di Dataflow. Il codice della pipeline deve eseguire il wrapping di tutti i parametri di runtime nell'interfaccia ValueProvider
. Questa interfaccia consente agli utenti di specificare i valori dei parametri quando eseguono il deployment del modello. Per utilizzare l'API con i modelli classici, consulta la documentazione di riferimento dell'API projects.locations.templates
.
I modelli flessibili offrono i seguenti vantaggi rispetto ai modelli classici:
- A differenza dei modelli classici, i modelli flessibili non richiedono l'interfaccia
ValueProvider
per i parametri di input. Non tutte le origini e i sink Dataflow supportanoValueProvider
. - Mentre i modelli classici hanno un grafico dei job statico, i modelli flessibili possono creare dinamicamente il grafico dei job. Ad esempio, il modello potrebbe selezionare un connettore I/O diverso in base ai parametri di input.
- Un modello flessibile può eseguire la pre-elaborazione su una macchina virtuale (VM) durante la creazione della pipeline. Ad esempio, potrebbe convalidare i valori dei parametri di input.
Flusso di lavoro del modello
L'utilizzo dei modelli Dataflow prevede i seguenti passaggi generali:
- Gli sviluppatori configurano un ambiente di sviluppo e sviluppano la propria pipeline. L'ambiente include l'SDK Apache Beam e altre dipendenze.
- A seconda del tipo di modello (Flex o Classic):
- Per i modelli flessibili, gli sviluppatori pacchettizzano la pipeline in un'immagine Docker, eseguono il push dell'immagine in Artifact Registry e caricano un file di specifica del modello in Cloud Storage.
- Per i modelli classici, gli sviluppatori eseguono la pipeline, creano un file del modello e archiviano il modello in Cloud Storage.
- Gli altri utenti inviano una richiesta al servizio Dataflow per eseguire il modello.
- Dataflow crea una pipeline a partire dal modello. L'esecuzione della pipeline può richiedere da cinque a sette minuti.
Impostazione delle autorizzazioni IAM
I job Dataflow, inclusi quelli eseguiti da modelli, utilizzano due account di servizio IAM:
- Il servizio Dataflow utilizza un account di servizio Dataflow per manipolare le risorse Google Cloud, ad esempio per creare VM.
- Le VM worker Dataflow utilizzano un account di servizio worker per accedere ai file e ad altre risorse della pipeline. Questo account di servizio deve accedere a tutte le risorse a cui fa riferimento il job della pipeline, inclusi l'origine e il sink utilizzati dal modello. Per maggiori informazioni, consulta Accedere alle risorse di Google Cloud.
Assicurati che questi due account di servizio abbiano ruoli appropriati. Per ulteriori informazioni, consulta Sicurezza e autorizzazioni di Dataflow.
Requisiti di versione dell'SDK Apache Beam
Per creare modelli personalizzati, assicurati che la versione dell'SDK Apache Beam supporti la creazione di modelli.
Java
Per creare modelli con l'SDK Apache Beam 2.x per Java, devi avere la versione 2.0.0-beta3 o successive.
Python
Per creare modelli con l'SDK Apache Beam 2.x per Python, devi avere la versione 2.0.0 o successive.
Per eseguire i modelli con Google Cloud CLI, devi disporre di Google Cloud CLI versione 138.0.0 o successiva.
Estendi modelli
Puoi creare i tuoi modelli estendendo i modelli Dataflow open source. Ad esempio, per un modello che utilizza una durata fissa del periodo, i dati che arrivano al di fuori dell'intervallo potrebbero essere ignorati. Per evitare questo comportamento, utilizza il codice del modello come base e modificalo per richiamare l'operazione .withAllowedLateness
.