Dataflow-Pipeline mit Java erstellen
In diesem Dokument erfahren Sie, wie Sie Ihr Google Cloud -Projekt einrichten, eine Beispielpipeline erstellen, die mit dem Apache Beam SDK für Java erstellt wurde, und die Beispielpipeline im Dataflow-Dienst ausführen. Die Pipeline liest eine Textdatei aus Cloud Storage, zählt die Anzahl der einmaligen Wörter in der Datei und schreibt dann die Wortanzahl anschließend in Cloud Storage. Eine Einführung in die WordCount-Pipeline finden Sie im Video WordCount in Apache Beam verwenden.
Für diese Anleitung ist Maven erforderlich. Es ist aber auch möglich, das Beispielprojekt von Maven in Gradle zu konvertieren. Weitere Informationen finden Sie unter Optional: Von Maven in Gradle konvertieren.
Eine detaillierte Anleitung dazu finden Sie direkt in der Google Cloud Console. Klicken Sie dazu einfach auf Anleitung:
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
Weisen Sie Ihrem Compute Engine-Standarddienstkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID. - Ersetzen Sie
PROJECT_NUMBER
durch die Projekt-ID. Ihre Projektnummer finden Sie unter Projekte identifizieren oder verwenden Sie den Befehlgcloud projects describe
. - Ersetzen Sie
SERVICE_ACCOUNT_ROLE
durch jede einzelne Rolle.
-
Create a Cloud Storage bucket and configure it as follows:
-
Set the storage class to
S
(Standard). -
Legen Sie als Speicherort Folgendes fest:
US
(USA). -
Ersetzen Sie
BUCKET_NAME
durch einen eindeutigen Bucket-Namen. Der Bucket-Name darf keine vertraulichen Informationen enthalten, da der Bucket-Namespace global und öffentlich sichtbar ist. - Kopieren Sie Folgendes, was Sie in einem späteren Abschnitt benötigen:
- : Name Ihres Cloud Storage-Buckets
- Ihre Google Cloud Projekt-ID. Diese ID finden Sie unter Projekte identifizieren.
- Laden Sie das Java Development Kit (JDK) Version 11 herunter und installieren Sie es. (Dataflow unterstützt weiterhin Version 8.) Prüfen Sie, ob die Umgebungsvariable
JAVA_HOME
festgelegt ist und auf Ihre JDK-Installation verweist. - Laden Sie Apache Maven herunter und installieren Sie es entsprechend der Maven-Installationsanleitung für Ihr Betriebssystem.
- Verwenden Sie in Ihrer Shell oder Ihrem Terminal das Maven Archetype-Plug-in um ein Maven-Projekt auf Ihrem Computer zu erstellen, das die
WordCount
-Beispiele des Apache Beam SDK enthält:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.66.0 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=false
Der Befehl erstellt unter dem aktuellen Verzeichnis ein neues Verzeichnis mit dem Namen
word-count-beam
. Das Verzeichnisword-count-beam
enthält eine einfachepom.xml
-Datei und eine Reihe von Beispielpipelines, mit denen Wörter in Textdateien gezählt werden. - Prüfen Sie, ob das Verzeichnis
word-count-beam
die Dateipom.xml
enthält:Linux oder macOS
cd word-count-beam/ ls
Die Ausgabe sieht so aus:
pom.xml src
Windows
cd word-count-beam/ dir
Die Ausgabe sieht so aus:
pom.xml src
- Prüfen Sie, ob Ihr Maven-Projekt die Beispielpipelines enthält:
Linux oder macOS
ls src/main/java/org/apache/beam/examples/
Die Ausgabe sieht so aus:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Windows
dir src/main/java/org/apache/beam/examples/
Die Ausgabe sieht so aus:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
- Führen Sie in der Shell oder dem Terminal die Pipeline
WordCount
lokal im Verzeichnisword-count-beam
aus:mvn compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--output=counts"
Die Ausgabedateien haben das Präfix
counts
und werden in das Verzeichnisword-count-beam
geschrieben. Sie enthalten eindeutige Wörter aus dem Eingabetext und die Häufigkeit, mit der jedes Wort vorkommt. - Erstellen und führen Sie aus in Ihrer Shell oder Ihrem Terminal die Pipeline
WordCount
im Dataflow-Dienst über Ihr Verzeichnisword-count-beam
:mvn -Pdataflow-runner compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--project=PROJECT_ID \ --gcpTempLocation=gs://BUCKET_NAME/temp/ \ --output=gs://BUCKET_NAME/output \ --runner=DataflowRunner \ --region=REGION"
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Google Cloud -Projekt-IDBUCKET_NAME
: der Name Ihres Cloud Storage-BucketsREGION
: eine Dataflow-Region, z. B.us-central1
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
ZU JOBSAuf der Seite Jobs sind die Details aller verfügbaren Jobs einschließlich des Status aufgeführt. Der Status des Jobs wordcount lautet zuerst Wird ausgeführt… und wird dann auf Erfolgreich aktualisiert.
Wechseln Sie in der Google Cloud -Console unter „Cloud Storage“ zur Seite Buckets.
Buckets aufrufenAuf der Seite Browser wird eine Liste aller Storage-Buckets in Ihrem Projekt angezeigt.
- Klicken Sie auf den Storage-Bucket, den Sie erstellt haben.
Auf der Seite Bucket-Details werden die vom Dataflow-Job erstellten Ausgabedateien und Staging-Dateien angezeigt.
-
Löschen Sie den Bucket:
gcloud storage buckets delete BUCKET_NAME
Widerrufen Sie die Rollen, die Sie dem Compute Engine-Standarddienstkonto zugewiesen haben. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects remove-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=SERVICE_ACCOUNT_ROLE
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
Pipelinecode abrufen
Das Apache Beam SDK ist ein Open-Source-Programmiermodell für Datenverarbeitungspipelines. Sie definieren diese Pipelines mit einem Apache Beam-Programm und können einen Runner wie Dataflow zum Ausführen Ihrer Pipeline auswählen.
Eine detaillierte Einführung in die Apache Beam-Konzepte, die in diesen Beispielen verwendet werden, finden Sie in der Beispielanleitung für Apache Beam WordCount. In den nächsten Abschnitten wird
WordCount.java
verwendet.Pipeline lokal ausführen
Pipeline im Dataflow-Dienst ausführen
Ergebnisse ansehen
Bereinigen
Löschen Sie das Google Cloud -Projekt mit den Ressourcen, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das für den Schnellstart erstellte Projekt Google Cloud löschen.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Wenn Sie das in dieser Kurzanleitung verwendete Google Cloud -Projekt beibehalten möchten, löschen Sie die einzelnen Ressourcen:
Nächste Schritte
-
Set the storage class to