Modelli Dataflow

I modelli Dataflow consentono di pacchettizzare una pipeline Dataflow per il deployment. Chiunque abbia le autorizzazioni corrette può 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 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 consentono di personalizzare la pipeline quando esegui il deployment del modello.
  • Puoi eseguire il deployment di un modello utilizzando la Google Cloud console, Google Cloud CLI o le chiamate API REST. Non hai bisogno di un ambiente di sviluppo o di dipendenze della pipeline installate 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 offre 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 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 template 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 dal l'utente. Per utilizzare l'API per avviare un job che utilizza un modello flessibile, utilizza il projects.locations.flexTemplates.launch metodo.

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'ValueProvider interfaccia. Questa interfaccia consente agli utenti di specificare i valori dei parametri quando eseguono il deployment del modello. Per utilizzare l'API per lavorare con i modelli classici, consulta la projects.locations.templates documentazione di riferimento dell'API.

I modelli flessibili presentano 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 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 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 specifica del modello in Cloud Storage.
    • Per i modelli classici, gli sviluppatori eseguono la pipeline, creano un file di modello e lo preparano per Cloud Storage.
  3. Altri utenti inviano una richiesta al servizio Dataflow per eseguire il modello.
  4. Dataflow crea una pipeline dal modello. L'avvio dell'esecuzione della pipeline può richiedere da cinque a sette 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 Google Cloud le risorse, ad esempio per creare VM.
  • Le VM worker Dataflow utilizzano un service account 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, inclusi l'origine e il sink utilizzati dal modello. Per ulteriori informazioni, consulta Accedere alle Google Cloud risorse.

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

Se la tua organizzazione utilizza le policy sul confine di accesso dell'entità (PAB), le entità (come utenti o service account) potrebbero non essere in grado di visualizzare e eseguire i modelli forniti da Google. Per ulteriori informazioni e soluzioni, consulta Accedere ai modelli forniti da Google con le policy sul confine di accesso dell'entità.

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 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 avere la versione 138.0.0 o successive di Google Cloud CLI.

Estendi 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