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.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt in der Google Cloud Console aufzurufen.

Anleitung


Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.
  3. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  4. Google Cloud-Projekt erstellen oder auswählen.

    • Erstellen Sie ein Google Cloud-Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud-Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Aktivieren Sie die Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore und Cloud Resource Manager APIs:

    gcloud services enable dataflow compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com
  7. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

    gcloud auth application-default login
  8. Gewähren Sie Ihrem Google-Konto Rollen. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
    • Ersetzen Sie EMAIL_ADDRESS durch Ihre E-Mail-Adresse.
    • Ersetzen Sie ROLE durch jede einzelne Rolle.
  9. Installieren Sie die Google Cloud CLI.
  10. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Google Cloud-Projekt erstellen oder auswählen.

    • Erstellen Sie ein Google Cloud-Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud-Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

  12. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  13. Aktivieren Sie die Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore und Cloud Resource Manager APIs:

    gcloud services enable dataflow compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com
  14. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

    gcloud auth application-default login
  15. Gewähren Sie Ihrem Google-Konto Rollen. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
    • Ersetzen Sie EMAIL_ADDRESS durch Ihre E-Mail-Adresse.
    • Ersetzen Sie ROLE durch jede einzelne Rolle.
  16. 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 Befehl gcloud projects describe.
    • Ersetzen Sie SERVICE_ACCOUNT_ROLE durch jede einzelne Rolle.
  17. Erstellen Sie einen Cloud Storage-Bucket und konfigurieren Sie ihn so:
    • Legen Sie die Speicherklasse auf 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.
    gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
  18. 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 mithilfe Projekte identifizieren.
  19. 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.
  20. Laden Sie Apache Maven herunter und installieren Sie es entsprechend der Maven-Installationsanleitung für Ihr Betriebssystem.

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.

  1. 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.55.1 \
        -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 Verzeichnis word-count-beam enthält eine einfache pom.xml-Datei und eine Reihe von Beispielpipelines, mit denen Wörter in Textdateien gezählt werden.

  2. Prüfen Sie, ob das Verzeichnis word-count-beam die Datei pom.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
  3. 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

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

  • Führen Sie in der Shell oder dem Terminal die Pipeline WordCount lokal im Verzeichnis word-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 Verzeichnis word-count-beam geschrieben. Sie enthalten eindeutige Wörter aus dem Eingabetext und die Häufigkeit, mit der jedes Wort vorkommt.

Pipeline im Dataflow-Dienst ausführen

  • Erstellen und führen Sie aus in Ihrer Shell oder Ihrem Terminal die Pipeline WordCount im Dataflow-Dienst über Ihr Verzeichnis word-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"
    

    Dabei gilt:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID
    • BUCKET_NAME: der Name Ihres Cloud Storage-Buckets
    • REGION: eine Dataflow-Region, z. B. us-central1

Ergebnisse ansehen

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

    Auf 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.

  2. Wechseln Sie in der Google Cloud Console zur Cloud Storage-Seite Buckets.

    Buckets aufrufen

    Auf der Seite Browser wird eine Liste aller Storage-Buckets in Ihrem Projekt angezeigt.

  3. 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.

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 können Sie weitere Kosten vermeiden, wenn Sie das Google Cloud-Projekt löschen, das Sie für den Schnellstart erstellt haben.

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Einzelne Ressourcen löschen

Wenn Sie das in dieser Kurzanleitung verwendete Google Cloud-Projekt beibehalten möchten, löschen Sie die einzelnen Ressourcen:

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

    Buckets aufrufen

  2. Klicken Sie auf das Kästchen neben dem Bucket, der gelöscht werden soll.
  3. Klicken Sie zum Löschen des Buckets auf Löschen und folgen Sie der Anleitung.
  4. 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
  5. Optional: Widerrufen Sie die von Ihnen erstellten Anmeldedaten für die Authentifizierung und löschen Sie die lokale Datei mit den Anmeldedaten:

    gcloud auth application-default revoke
  6. Optional: Widerrufen Sie Anmeldedaten von der gcloud-CLI.

    gcloud auth revoke

Nächste Schritte