Auf dieser Seite wird beschrieben, wie Sie einen Dataflow-Job mit einer flexiblen Vorlage ausführen. Mit flexiblen Vorlagen können Sie eine Dataflow-Pipeline so verpacken, dass Sie die Pipeline ohne Apache Beam-Entwicklungsumgebung ausführen können.
Erforderliche Berechtigungen
Wenn Sie eine Flex-Vorlage ausführen, erstellt Dataflow einen Job für Sie. Zum Erstellen des Jobs benötigt das Dataflow-Dienstkonto die folgende Berechtigung:
dataflow.serviceAgent
Wenn Sie Dataflow zum ersten Mal verwenden, weist der Dienst Ihnen diese Rolle zu. Sie müssen diese Berechtigung dann also nicht erteilen.
Standardmäßig wird das Compute Engine-Dienstkonto für Launcher-VMs und Worker-VMs verwendet. Das Dienstkonto benötigt die folgenden Rollen und Funktionen:
- Storage-Objekt-Administrator (
roles/storage.objectAdmin) - Betrachter (
roles/viewer) - Dataflow-Worker (
roles/dataflow.worker) - Lese- und Schreibzugriff auf den Staging-Bucket
- Lesezugriff auf das Flex-Vorlagenbild
Wenn Sie Lese- und Schreibzugriff auf den Staging-Bucket gewähren möchten, verwenden Sie die Rolle "Storage-Objekt-Administrator" (roles/storage.objectAdmin). Weitere Informationen finden Sie unter IAM-Rollen für Cloud Storage.
Um Lesezugriff auf das Flex-Vorlagen-Image zu erteilen, können Sie die Rolle "Storage-Objekt-Betrachter" (roles/storage.objectViewer) verwenden. Weitere Informationen erhalten Sie unter Zugriffssteuerung konfigurieren.
Flexible Vorlage ausführen
Verwenden Sie den Befehl gcloud dataflow flex-template run, um eine flexible Vorlage auszuführen:
gcloud dataflow flex-template run JOB_ID \ --template-file-gcs-location gs://TEMPLATE_FILE_LOCATION \ --region REGION \ --staging-location STAGING_LOCATION \ --temp-location TEMP_LOCATION \ --parameters PARAMETERS \ --additional-user-labels LABELS \
Ersetzen Sie Folgendes:
JOB_ID: die ID Ihres JobsTEMPLATE_FILE_LOCATION: der Cloud Storage-Speicherort der VorlagendateiREGION: die Region, in der der Dataflow-Job ausgeführt werden sollSTAGING_LOCATION: Der Cloud Storage-Speicherort für das Staging lokaler DateienTEMP_LOCATION: Der Cloud Storage-Speicherort, an dem temporäre Dateien geschrieben werden sollen. Wenn nichts anderes festgelegt ist, wird standardmäßig der Staging-Speicherort verwendet.PARAMETERS: Pipelineparameter für den JobLABELS: Optional. Labels, die Ihrem Job zugewiesen sind, im FormatKEY_1=VALUE_1,KEY_2=VALUE_2,....
Während des Staging-Schritts beim Starten einer Vorlage schreibt Dataflow Dateien an den Staging-Speicherort. Dataflow liest diese bereitgestellten Dateien, um die Jobgrafik zu erstellen. Während des Ausführungsschritts schreibt Dataflow Dateien an den temporären Speicherort.
Pipelineoptionen festlegen
Wenn Sie Pipelineoptionen festlegen möchten, wenn Sie eine flexible Vorlage ausführen, verwenden Sie die folgenden Flags im gcloud dataflow flex-template run-Befehl:
parameters: Mit diesem Flag können Sie die folgenden Arten von Pipeline-Optionen festlegen:Von Flex-Vorlagen unterstützte Pipelineoptionen. Eine Liste der Optionen, die von Flex-Vorlagen unterstützt werden, finden Sie unter Pipelineoptionen.
In den Vorlagenmetadaten deklarierte Pipeline-Optionen.
additional-pipeline-options: Verwenden Sie dieses Flag, um andere Apache Beam-Pipelineoptionen festzulegen, die von Flex-Vorlagen nicht direkt unterstützt werden.additional-experiments: Mit diesem Flag können Sie experimentelle Pipeline-Optionen festlegen (entspricht der Optionexperiments).
gcloud
Fügen Sie Pipelineoptionen mit dem Flag
parametershinzu.Fügen Sie Laufzeit-Tests und Pipelineoptionen mit den Flags
additional-experimentsundadditional-pipeline-optionshinzu.
Wenn Sie Parameter vom Typ List oder Map übergeben, müssen Sie möglicherweise Parameter in einer YAML-Datei definieren und das Flag flags-file verwenden.
API
Fügen Sie Pipelineoptionen mit dem Feld
parametershinzu.Fügen Sie Laufzeit-Tests und Pipelineoptionen mit den Feldern
additionalExperimentsundadditionalPipelineOptionshinzu.
Im folgenden Beispiel sehen Sie, wie Sie Pipelineoptionen, Tests und zusätzliche Optionen in einen Anfragetext einfügen:
{
"jobName": "my-flex-template-job",
"parameters": {
"option_defined_in_metadata": "value"
},
"environment": {
"additionalExperiments": [
"use_runner_v2"
],
"additionalPipelineOptions": {
"common_pipeline_option": "value"
}
}
}
Bei Verwendung von Flex-Vorlagen haben Sie die Möglichkeit, einige Pipelineoptionen bei der Pipelineinitialisierung zu konfigurieren. Es können aber nicht alle Pipelineoptionen geändert werden. Wenn die von der Flex-Vorlage erforderlichen Befehlszeilenargumente überschrieben werden, kann es sein, dass der Job die vom Vorlagen-Launcher übergebenen Pipelineoptionen ignoriert, überschreibt oder verwirft. Der Job wird möglicherweise nicht gestartet, oder es wird ein Job gestartet, der die Flex-Vorlage nicht verwendet. Weitere Informationen finden Sie unter Jobdatei konnte nicht gelesen werden.
Ändern Sie bei der Pipelineinitialisierung die folgenden Pipelineoptionen nicht:
Java
runnerprojectjobNametemplateLocationregion
Python
runnerprojectjob_nametemplate_locationregion
Go
runnerprojectjob_nametemplate_locationregion
Projekt-SSH-Schlüssel für VMs mit metadatenbasierten SSH-Schlüsseln blockieren
Wenn Sie verhindern möchten, dass VMs SSH-Schlüssel akzeptieren, die in Projektmetadaten gespeichert sind, können Sie die Projekt-SSH-Schlüssel für VMs blockieren. Verwenden Sie das Flag additional-experiments mit der Dienstoption block_project_ssh_keys:
--additional-experiments=block_project_ssh_keys
Weitere Informationen finden Sie unter Dataflow-Dienstoptionen.
Job mit flexibler Vorlage aktualisieren
Die folgende Beispielanfrage zeigt, wie Sie eine Vorlage für einen Streamingjob mit der Methode projects.locations.flexTemplates.launch aktualisieren. Wenn Sie die gcloud CLI verwenden möchten, finden Sie weitere Informationen unter Vorhandene Pipeline aktualisieren.
Wenn Sie eine klassische Vorlage aktualisieren möchten, verwenden Sie stattdessen projects.locations.templates.launch.
Führen Sie die Schritte zum Erstellen eines Streamingjobs aus einer flexiblen Vorlage aus. Senden Sie die folgende HTTP-POST-Anfrage mit den geänderten Werten:
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch { "launchParameter": { "update": true "jobName": "JOB_NAME", "parameters": { "input_subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME", "output_table": "PROJECT_ID:DATASET.TABLE_NAME" }, "containerSpecGcsPath": "STORAGE_PATH" }, }- Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID. - Ersetzen Sie
REGIONdurch die Dataflow-Region des Jobs, den Sie aktualisieren. - Ersetzen Sie
JOB_NAMEdurch den genauen Namen des Jobs, den Sie aktualisieren möchten. - Stellen Sie das Flag
parametersauf Ihre Liste der Schlüssel/Wert-Paare ein. Die aufgeführten Parameter gelten speziell für dieses Vorlagenbeispiel. Wenn Sie eine benutzerdefinierte Vorlage verwenden, ändern Sie die Parameter nach Bedarf. Wenn Sie die Beispielvorlage verwenden, ersetzen Sie die folgenden Variablen.- Ersetzen Sie
SUBSCRIPTION_NAMEdurch den Namen des Pub/Sub-Abos. - Ersetzen Sie
DATASETdurch den Namen Ihres BigQuery-Datasets. - Ersetzen Sie
TABLE_NAMEdurch Ihren BigQuery-Tabellennamen.
- Ersetzen Sie
- Ersetzen Sie
STORAGE_PATHdurch den Cloud Storage-Speicherort der Vorlagendatei. Der Speicherort sollte mitgs://beginnen.
- Ersetzen Sie
Mit dem Parameter
environmentkönnen Sie die Umgebungseinstellungen ändern. Weitere Informationen finden Sie unter:FlexTemplateRuntimeEnvironmentOptional: Zum Senden der Anfrage mit curl (Linux, macOS oder Cloud Shell) speichern Sie die Anfrage in einer JSON-Datei und führen Sie dann den folgenden Befehl aus:
curl -X POST -d "@FILE_PATH" -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launchErsetzen Sie FILE_PATH durch den Pfad zur JSON-Datei, die den Anfragetext enthält.
Überprüfen Sie über die Dataflow-Monitoring-Oberfläche, ob ein neuer Job mit demselben Namen erstellt wurde. Dieser Job hat den Status Aktualisiert.
Nächste Schritte
- Flexible Vorlage für Ihre Apache Beam-Pipeline erstellen
- Weitere Informationen zu klassischen Vorlagen und Flex-Vorlagen sowie zu ihren Anwendungsfallszenarien finden Sie unter Dataflow-Vorlagen.
- Informationen zur Fehlerbehebung bei flexiblen Vorlagen finden Sie unter Fehlerbehebung bei Zeitüberschreitungen bei Flex-Vorlagen.
- Weitere Referenzarchitekturen, Diagramme und Best Practices finden Sie im Cloud-Architekturcenter.