Esecuzione di modelli classici

Dopo aver creato e archiviato il modello Dataflow in un'area intermedia, esegui il modello con la console Google Cloud , l'API REST o Google Cloud CLI. Puoi eseguire il deployment dei job del modello Dataflow da molti ambienti, tra cui l'ambiente standard di App Engine, Cloud Run Functions e altri ambienti vincolati.

Utilizza la console Google Cloud

Puoi utilizzare la console Google Cloud per eseguire i modelli Dataflow personalizzati e forniti da Google.

Modelli forniti da Google

Per eseguire un modello fornito da Google:

  1. Vai alla pagina Dataflow nella console Google Cloud .
  2. Vai alla pagina Dataflow
  3. Fai clic su CREA JOB DA MODELLO.
  4.  Pulsante Crea job da modello della consoleGoogle Cloud
  5. Seleziona il modello fornito da Google che vuoi eseguire dal menu a discesa Modello Dataflow.
  6. Modulo di esecuzione del template WordCount
  7. Inserisci un nome per il job nel campo Nome job.
  8. Inserisci i valori dei parametri nei campi dei parametri forniti. La sezione Parametri aggiuntivi non è necessaria quando utilizzi un modello fornito da Google.
  9. Fai clic su Esegui job.

Modelli personalizzati

Per eseguire un modello personalizzato:

  1. Vai alla pagina Dataflow nella console Google Cloud .
  2. Vai alla pagina Dataflow
  3. Fai clic su CREA JOB DA MODELLO.
  4.  Pulsante Crea job da modello della consoleGoogle Cloud
  5. Seleziona Modello personalizzato dal menu a discesa Modello Dataflow.
  6. Modulo di esecuzione del modello personalizzato
  7. Inserisci un nome per il job nel campo Nome job.
  8. Inserisci il percorso Cloud Storage del file del template nel campo del percorso Cloud Storage del template.
  9. Se il modello richiede parametri, fai clic su AGGIUNGI PARAMETRO nella sezione Parametri aggiuntivi. Inserisci il Nome e il Valore del parametro. Ripeti questo passaggio per ogni parametro necessario.
  10. Fai clic su Esegui job.

Utilizzo dell'API REST

Per eseguire un modello con una richiesta API REST, invia una richiesta POST HTTP con l'ID progetto. Questa richiesta richiede l'autorizzazione.

Per saperne di più sui parametri disponibili, consulta il riferimento API REST per projects.locations.templates.launch.

Crea un job batch di modelli personalizzati

Questa richiesta projects.locations.templates.launch di esempio crea un job batch da un template che legge un file di testo e scrive un file di testo di output. Se la richiesta ha esito positivo, il corpo della risposta contiene un'istanza di LaunchTemplateResponse.

Modifica i seguenti valori:

  • Sostituisci YOUR_PROJECT_ID con l'ID progetto.
  • Sostituisci LOCATION con la regione Dataflow che preferisci.
  • Sostituisci JOB_NAME con un nome del job a tua scelta.
  • Sostituisci YOUR_BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • Imposta gcsPath sulla posizione Cloud Storage del file del template.
  • Imposta parameters sul tuo elenco di coppie chiave-valore.
  • Imposta tempLocation su una posizione per cui disponi dell'autorizzazione in scrittura. Questo valore è obbligatorio per eseguire i template forniti da Google.
    POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://YOUR_BUCKET_NAME/templates/TemplateName
    {
        "jobName": "JOB_NAME",
        "parameters": {
            "inputFile" : "gs://YOUR_BUCKET_NAME/input/my_input.txt",
            "output": "gs://YOUR_BUCKET_NAME/output/my_output"
        },
        "environment": {
            "tempLocation": "gs://YOUR_BUCKET_NAME/temp",
            "zone": "us-central1-f"
        }
    }

Crea un job di flussi di dati da un modello personalizzato

Questa richiesta projects.locations.templates.launch di esempio crea un job di flussi di dati da un modello classico che legge da una sottoscrizione Pub/Sub e scrive in una tabella BigQuery. Se vuoi avviare un template flessibile, utilizza invece projects.locations.flexTemplates.launch. Il modello di esempio è un modello fornito da Google. Puoi modificare il percorso nel modello in modo che rimandi a un modello personalizzato. La stessa logica viene utilizzata per avviare i modelli forniti da Google e quelli personalizzati. In questo esempio, la tabella BigQuery deve già esistere con lo schema appropriato. In caso di esito positivo, il corpo della risposta contiene un'istanza di LaunchTemplateResponse.

Modifica i seguenti valori:

  • Sostituisci YOUR_PROJECT_ID con l'ID progetto.
  • Sostituisci LOCATION con la regione Dataflow che preferisci.
  • Sostituisci JOB_NAME con un nome del job a tua scelta.
  • Sostituisci YOUR_BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • Sostituisci GCS_PATH con la posizione Cloud Storage del file del template. La località deve iniziare con gs://
  • Imposta parameters sul tuo elenco di coppie chiave-valore. I parametri elencati sono specifici per questo esempio di template. Se utilizzi un modello personalizzato, modifica i parametri in base alle tue esigenze. Se utilizzi il modello di esempio, sostituisci le seguenti variabili.
    • Sostituisci YOUR_SUBSCRIPTION_NAME con il nome della tua sottoscrizione Pub/Sub.
    • Sostituisci YOUR_DATASET con il tuo set di dati BigQuery e YOUR_TABLE_NAME con il nome della tabella BigQuery.
  • Imposta tempLocation su una posizione in cui disponi dell'autorizzazione in scrittura. Questo valore è obbligatorio per eseguire i template forniti da Google.
    POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=GCS_PATH
    {
        "jobName": "JOB_NAME",
        "parameters": {
            "inputSubscription": "projects/YOUR_PROJECT_ID/subscriptions/YOUR_SUBSCRIPTION_NAME",
            "outputTableSpec": "YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME"
        },
        "environment": {
            "tempLocation": "gs://YOUR_BUCKET_NAME/temp",
            "zone": "us-central1-f"
        }
    }

Aggiorna un job di flussi di dati con un modello personalizzato

Questo esempio di richiesta projects.locations.templates.launch mostra come aggiornare un job di flussi di dati del template. Se vuoi aggiornare un template flessibile, utilizza invece projects.locations.flexTemplates.launch.

  1. Esegui Esempio 2: creazione di un job di streaming da un modello personalizzato per avviare un job da un modello di flussi di dati.
  2. Invia la seguente richiesta POST HTTP con i seguenti valori modificati:
    • Sostituisci YOUR_PROJECT_ID con l'ID progetto.
    • Sostituisci LOCATION con la regione Dataflow del job che stai aggiornando.
    • Sostituisci JOB_NAME con il nome esatto del job che vuoi aggiornare.
    • Sostituisci GCS_PATH con la posizione Cloud Storage del file del template. La località deve iniziare con gs://
    • Imposta parameters sul tuo elenco di coppie chiave-valore. I parametri elencati sono specifici per questo esempio di template. Se utilizzi un modello personalizzato, modifica i parametri in base alle tue esigenze. Se utilizzi il modello di esempio, sostituisci le seguenti variabili.
      • Sostituisci YOUR_SUBSCRIPTION_NAME con il nome della tua sottoscrizione Pub/Sub.
      • Sostituisci YOUR_DATASET con il tuo set di dati BigQuery e YOUR_TABLE_NAME con il nome della tabella BigQuery.
    • Utilizza il parametro environment per modificare le impostazioni dell'ambiente, ad esempio il tipo di macchina. Questo esempio utilizza il tipo di macchina n2-highmem-2, che ha più memoria e CPU per worker rispetto al tipo di macchina predefinito.
        POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=GCS_PATH
        {
            "jobName": "JOB_NAME",
            "parameters": {
                "inputSubscription": "projects/YOUR_PROJECT_ID/subscriptions/YOUR_TOPIC_NAME",
                "outputTableSpec": "YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME"
            },
            "environment": {
                "machineType": "n2-highmem-2"
            },
            "update": true
        }
    
  3. Accedi all'interfaccia di monitoraggio di Dataflow e verifica che sia stato creato un nuovo job con lo stesso nome. Questo job ha lo stato Aggiornato.

Utilizza le librerie client delle API di Google

Valuta la possibilità di utilizzare le librerie client dell'API di Google per effettuare facilmente chiamate alle API REST di Dataflow. Questo script di esempio utilizza la libreria client delle API di Google per Python.

In questo esempio, devi impostare le seguenti variabili:

  • project: impostato sull'ID progetto.
  • job: impostalo su un nome job univoco di tua scelta.
  • template: impostato sulla posizione Cloud Storage del file del template.
  • parameters: impostato su un dizionario con i parametri del template.

Per impostare la regione, includi il parametro location.

from googleapiclient.discovery import build

# project = 'your-gcp-project'
# job = 'unique-job-name'
# template = 'gs://dataflow-templates/latest/Word_Count'
# parameters = {
#     'inputFile': 'gs://dataflow-samples/shakespeare/kinglear.txt',
#     'output': 'gs://<your-gcs-bucket>/wordcount/outputs',
# }

dataflow = build("dataflow", "v1b3")
request = (
    dataflow.projects()
    .templates()
    .launch(
        projectId=project,
        gcsPath=template,
        body={
            "jobName": job,
            "parameters": parameters,
        },
    )
)

response = request.execute()

Per saperne di più sulle opzioni disponibili, consulta il metodo projects.locations.templates.launch nel riferimento API REST di Dataflow.

Utilizza gcloud CLI

gcloud CLI può eseguire un modello personalizzato o fornito da Google utilizzando il comando gcloud dataflow jobs run. Esempi di esecuzione dei template forniti da Google sono documentati nella pagina dei template forniti da Google.

Per i seguenti esempi di modelli personalizzati, imposta i seguenti valori:

  • Sostituisci JOB_NAME con un nome del job a tua scelta.
  • Sostituisci YOUR_BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • Imposta --gcs-location sulla posizione Cloud Storage del file del template.
  • Imposta --parameters sull'elenco separato da virgole dei parametri da passare al job. Non sono consentiti spazi tra le virgole e i valori.
  • Per impedire alle VM di accettare chiavi SSH archiviate nei metadati del progetto, utilizza il flag additional-experiments con l'opzione di servizio block_project_ssh_keys: --additional-experiments=block_project_ssh_keys.

Crea un job batch di modelli personalizzati

Questo esempio crea un job batch da un template che legge un file di testo e scrive un file di testo di output.

    gcloud dataflow jobs run JOB_NAME \
        --gcs-location gs://YOUR_BUCKET_NAME/templates/MyTemplate \
        --parameters inputFile=gs://YOUR_BUCKET_NAME/input/my_input.txt,output=gs://YOUR_BUCKET_NAME/output/my_output

La richiesta restituisce una risposta con il seguente formato.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: YOUR_PROJECT_ID
    type: JOB_TYPE_BATCH

Crea un job di flussi di dati da un modello personalizzato

Questo esempio crea un job di flussi di dati da un template che legge da un argomento Pub/Sub e scrive in una tabella BigQuery. La tabella BigQuery deve già esistere con lo schema appropriato.

    gcloud dataflow jobs run JOB_NAME \
        --gcs-location gs://YOUR_BUCKET_NAME/templates/MyTemplate \
        --parameters topic=projects/project-identifier/topics/resource-name,table=my_project:my_dataset.my_table_name

La richiesta restituisce una risposta con il seguente formato.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: YOUR_PROJECT_ID
    type: JOB_TYPE_STREAMING

Per un elenco completo dei flag per il comando gcloud dataflow jobs run, consulta il riferimento di gcloud CLI.

Monitoraggio e risoluzione dei problemi

L'interfaccia di monitoraggio di Dataflow ti consente di monitorare i job Dataflow. Se un job non riesce, puoi trovare suggerimenti per la risoluzione dei problemi, strategie di debug e un catalogo di errori comuni nella guida Risoluzione dei problemi della pipeline.

Per ispezionare e controllare in modo programmatico i job dei modelli in esecuzione o storici utilizzando gcloud CLI o l'API REST, consulta Ispeziona e controlla i job dei modelli.