Modelli Dataflow

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 modelli Dataflow personalizzati e 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ò eseguirne il deployment in un secondo momento.
  • I modelli possono avere parametri che ti 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 installare un ambiente di sviluppo o dipendenze della pipeline sulla tua 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 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.

Confronta i modelli flessibili e i modelli classici

Dataflow supporta due tipi di modelli: i modelli flessibili, che sono 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, recupera 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, utilizza il metodo projects.locations.flexTemplates.launch.

Un modello classico contiene la serializzazione JSON di un grafico dei 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 distribuiscono il modello. Per utilizzare l'API per lavorare 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 supportano ValueProvider.
  • Mentre i modelli classici hanno un grafico dei job statico, i modelli flessibili possono costruire 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 il pre-elaborazione su una macchina virtuale (VM) durante la costruzione della pipeline. Ad esempio, potrebbe convalidare i valori dei parametri di input.

Workflow del modello

L'utilizzo dei modelli Dataflow prevede i seguenti passaggi di alto livello:

  1. Gli sviluppatori configurano un ambiente di sviluppo e sviluppano la pipeline. L'ambiente include l'SDK Apache Beam e altre dipendenze.
  2. A seconda del tipo di modello (flessibile o classico):
    • 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 specifiche del modello in Cloud Storage.
    • Per i modelli classici, gli sviluppatori eseguono la pipeline, creano un file modello e lo eseguono in Cloud Storage.
  3. Gli altri utenti inviano una richiesta al servizio Dataflow per eseguire il modello.
  4. Dataflow crea una pipeline dal modello. L'avvio della pipeline può richiedere fino a 5-7 minuti.

Imposta autorizzazioni IAM

I job Dataflow, inclusi quelli eseguiti dai modelli, utilizzano due service account IAM:

  • Il servizio Dataflow utilizza un service account Dataflow per manipolare le risorse Google Cloud , ad esempio la creazione di 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, incluse l'origine e il sink utilizzati dal modello. Per saperne di più, consulta Risorse Google Cloud di accesso.

Assicurati che questi due service account abbiano i ruoli appropriati. Per ulteriori informazioni, vedi Sicurezza e autorizzazioni di Dataflow.

Requisiti di 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 successive.

Python

Per creare modelli con l'SDK Apache Beam 2.x per Python, devi disporre della 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 successive.

Estendere i modelli

Puoi creare i tuoi modelli estendendo i modelli Dataflow open source. Ad esempio, per un modello che utilizza una durata della finestra fissa, i dati che arrivano al di fuori della finestra potrebbero essere eliminati. Per evitare questo comportamento, utilizza il codice del modello come base e modificalo per richiamare l'operazione .withAllowedLateness.

Passaggi successivi