A differenza dei flussi di lavoro standard che creano un'istanza di una risorsa modello di flusso di lavoro creata in precedenza, i flussi di lavoro in linea utilizzano un file YAML o una definizione di WorkflowTemplate incorporata per eseguire un flusso di lavoro.
Creazione ed esecuzione di un flusso di lavoro in linea
Consulta Eseguire l'inizializzazione di un flusso di lavoro utilizzando un file YAML.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: Google Cloud ID progetto
- region: regione del cluster, ad esempio "us-central1"
- zoneUri: Specifica un zone all'interno della regione del cluster, ad esempio "us-central1-b", oppure lascia vuoto ("") per utilizzare Posizionamento automatico delle zone di Dataproc.
- clusterName: nome del cluster
Metodo HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/project-id /regions/region /workflowTemplates:instantiateInline
Corpo JSON della richiesta:
{ "jobs": [ { "hadoopJob": { "mainJarFileUri": "file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar", "args": [ "teragen", "1000", "hdfs:///gen/" ] }, "stepId": "teragen" }, { "hadoopJob": { "mainJarFileUri": "file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar", "args": [ "terasort", "hdfs:///gen/", "hdfs:///sort/" ] }, "stepId": "terasort", "prerequisiteStepIds": [ "teragen" ] } ], "placement": { "managedCluster": { "clusterName": "cluster-name ", "config": { "gceClusterConfig": { "zoneUri": "zone " } } } } }
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/project-id /regions/region /workflowTemplates:instantiateInline"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/project-id /regions/region /workflowTemplates:instantiateInline" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/project-id/regions/region/operations/2fbd0dad-...", "metadata": { "@type": "type.googleapis.com/google.cloud.dataproc.v1.WorkflowMetadata", "graph": { "nodes": [ { "stepId": "teragen", "state": "RUNNABLE" }, { "stepId": "terasort", "prerequisiteStepIds": [ "teragen" ], "state": "BLOCKED" } ] }, "state": "PENDING", "startTime": "2020-04-02T22:50:44.826Z" } }
Al momento, la creazione di flussi di lavoro in linea non è supportata nella console Google Cloud. I modelli di flusso di lavoro e i flussi di lavoro con istanze create possono essere visualizzati nella pagina Dataproc Flui di lavoro.