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 pacchettizzata. Puoi creare i tuoi modelli Dataflow personalizzati e Google fornisce modelli predefiniti per scenari comuni.
Vantaggi
I modelli offrono 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 template e un data scientist può eseguirlo in un secondo momento.
- I modelli possono avere parametri che ti consentono di personalizzare la pipeline quando esegui il deployment del template.
- Puoi eseguire il deployment di un modello utilizzando la console Google Cloud, Google Cloud CLI o le chiamate API REST. Non è necessario un ambiente di sviluppo o dipendenze della pipeline installate sulla tua macchina locale.
- Un modello è un elemento del codice che può essere archiviato in un repository di controllo del codice e utilizzato nelle pipeline di integrazione continua (CI/CD).
Modelli forniti da Google
Google fornisce una serie di modelli Dataflow open source predefiniti che puoi utilizzare per scenari comuni. Per ulteriori informazioni sui modelli disponibili, consulta Modelli forniti da Google.
Confrontare i modelli flessibili 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 crearlo 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 in modo dinamico in base ai parametri di runtime forniti dall'utente. Per utilizzare l'API per lanciare un job che utilizza un modello flessibile, utilizza il metodo
projects.locations.flexTemplates.launch
.
Un modello classico contiene la serializzazione JSON di un grafico di job Dataflow. Il
codice della pipeline deve racchiudere tutti i parametri di runtime nell'interfaccia ValueProvider
. Questa interfaccia consente agli utenti di specificare i valori dei parametri quando eseguono il deployment del
template. Per utilizzare l'API per lavorare con i modelli classici, consulta la
projects.locations.templates
documentazione di riferimento dell'API.
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 le destinazioni Dataflow supportanoValueProvider
. - Mentre i modelli classici hanno un grafo di job statico, i modelli flessibili possono costruire dinamicamente il grafo di job. Ad esempio, il modello potrebbe selezionare un connettore I/O diverso in base ai parametri di input.
- Un modello flessibile può eseguire la preelaborazione su una macchina virtuale (VM) durante la compilazione della pipeline. Ad esempio, potrebbe convalidare i valori dei parametri di input.
Flusso di lavoro del modello
L'utilizzo dei modelli di Dataflow prevede i seguenti passaggi di alto livello:
- Gli sviluppatori configurano un ambiente di sviluppo e sviluppano la pipeline. L'ambiente include l'SDK Apache Beam e altre dipendenze.
- A seconda del tipo di modello (flessibile o classico):
- Per i modelli Flex, gli sviluppatori pacchettizzano la pipeline in un'immagine Docker, eseguono il push dell'immagine su Artifact Registry e caricano un file di specifiche del modello su Cloud Storage.
- Per i modelli classici, gli sviluppatori eseguono la pipeline, creano un file modello e lo inseriscono in Cloud Storage.
- Gli altri utenti inviano una richiesta al servizio Dataflow per eseguire il modello.
- Dataflow crea una pipeline dal modello. L'avvio dell'esecuzione della pipeline può richiedere fino a cinque-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 creare VM.
- Le VM worker di Dataflow utilizzano un account di servizio worker per accedere ai file e ad altre risorse della pipeline. Questo account di servizio deve avere accesso a tutte le risorse a cui fa riferimento il job della pipeline, incluse l'origine e la destinazione utilizzate dal modello. Per ulteriori informazioni, consulta Accedere alle risorse Google Cloud.
Assicurati che questi due account di servizio abbiano i ruoli appropriati. Per ulteriori informazioni, consulta Autorizzazioni e sicurezza di Dataflow.
Requisiti relativi alla versione dell'SDK Apache Beam
Per creare i tuoi modelli, 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 disporre della versione 2.0.0-beta3 o successiva.
Python
Per creare modelli con l'SDK Apache Beam 2.x per Python, devi disporre della versione 2.0.0 o superiore.
Per eseguire i modelli con Google Cloud CLI, devi disporre della versione 138.0.0 o successiva di Google Cloud CLI.
Espandere i modelli
Puoi creare i tuoi modelli estendendo i modelli Dataflow open source. Ad esempio, per un modello che utilizza una durata fissa della finestra, i dati che arrivano al di fuori della finestra potrebbero essere ignorati. Per evitare questo comportamento, utilizza il codice del modello come base e modificalo in modo da richiamare l'operazione .withAllowedLateness
.