Créer un pipeline Dataflow à l'aide de Java

Ce document explique comment configurer votre projet Google Cloud, créer un exemple de pipeline construit avec le SDK Apache Beam pour Java et exécuter l'exemple de pipeline sur le service Dataflow. Le pipeline lit un fichier texte à partir de Cloud Storage, compte le nombre de mots uniques dans ce fichier, puis écrit le nombre de mots dans Cloud Storage. Pour une présentation du pipeline WordCount, regardez la vidéo How to use WordCount in Apache Beam (Comment utiliser WordCount dans Apache Beam).

Ce tutoriel nécessite Maven, mais il est également possible de convertir l'exemple de projet de Maven vers Gradle. Pour en savoir plus, consultez la section Facultatif : convertir de Maven vers Gradle.


Pour obtenir des conseils détaillés sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 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
  7. Create local authentication credentials for your user account:

    gcloud auth application-default login
  8. 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 PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. 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
  14. Create local authentication credentials for your user account:

    gcloud auth application-default login
  15. 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 PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  16. Attribuez des rôles à votre compte de service Compute Engine par défaut. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :

    • 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
    • Remplacez PROJECT_ID par l'ID du projet.
    • Remplacez PROJECT_NUMBER par votre numéro de projet. Pour trouver votre numéro de projet, consultez la section Identifier des projets ou utilisez la commande gcloud projects describe.
    • Remplacez SERVICE_ACCOUNT_ROLE par chaque rôle individuel.
  17. Create a Cloud Storage bucket and configure it as follows:
    • Set the storage class to S (Standard).
    • Définissez l'emplacement de stockage sur : US (États-Unis).
    • Remplacez BUCKET_NAME par un nom de bucket unique. N'incluez aucune information sensible dans le nom des buckets, car leur espace de noms est global et visible par tous.
    • gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
    • Copiez les éléments suivants, car vous en aurez besoin dans une section ultérieure :
      • Le nom de votre bucket Cloud Storage.
      • L'ID de votre projet Google Cloud. Pour trouver cet ID, consultez la section Identifier des projets.
    • Téléchargez et installez le kit de développement Java (JDK) version 11. (Dataflow continue à être compatible avec la version 8.) Vérifiez que la variable d'environnement JAVA_HOME est définie et pointe vers votre installation JDK.
    • Téléchargez et installez Apache Maven en suivant les instructions du guide d'installation de Maven spécifique à votre système d'exploitation.

Obtenir le code du pipeline

Le SDK Apache Beam est un modèle de programmation Open Source pour les pipelines de traitement de données. Vous définissez ces pipelines avec un programme Apache Beam et pouvez choisir un exécuteur, tel que Dataflow, pour les lancer.

  1. Dans votre interface système ou votre terminal, utilisez le plug-in Maven Archetype pour créer sur votre ordinateur un projet Maven contenant les exemples WordCount du SDK Apache Beam :
    mvn archetype:generate \
        -DarchetypeGroupId=org.apache.beam \
        -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
        -DarchetypeVersion=2.61.0 \
        -DgroupId=org.example \
        -DartifactId=word-count-beam \
        -Dversion="0.1" \
        -Dpackage=org.apache.beam.examples \
        -DinteractiveMode=false
    

    La commande crée un répertoire nommé word-count-beam dans votre répertoire actuel. Le répertoire word-count-beam contient un simple fichier pom.xml et une série d'exemples de pipelines effectuant un décompte des mots dans des fichiers texte.

  2. Vérifiez que votre répertoire word-count-beam contient le fichier pom.xml :

    Linux ou macOS

    cd word-count-beam/
    ls

    Le résultat est le suivant :

    pom.xml   src

    Windows

    cd word-count-beam/
    dir

    Le résultat est le suivant :

    pom.xml   src
  3. Vérifiez que votre projet Maven contient les exemples de pipelines suivants :

    Linux ou macOS

    ls src/main/java/org/apache/beam/examples/

    Le résultat est le suivant :

    DebuggingWordCount.java   WindowedWordCount.java   common
    MinimalWordCount.java   WordCount.java

    Windows

    dir src/main/java/org/apache/beam/examples/

    Le résultat est le suivant :

    DebuggingWordCount.java   WindowedWordCount.java   common
    MinimalWordCount.java   WordCount.java

Pour une présentation détaillée des concepts d'Apache Beam utilisés dans ces exemples, reportez-vous à la page Exemple Apache Beam WordCount. Les instructions des sections suivantes utilisent WordCount.java.

Exécuter le pipeline en local

  • Dans votre interface système ou votre terminal, exécutez le pipeline WordCount localement à partir de votre répertoire word-count-beam :
    mvn compile exec:java \
        -Dexec.mainClass=org.apache.beam.examples.WordCount \
        -Dexec.args="--output=counts"
    

    Les fichiers de sortie sont dotés du préfixe counts et sont écrits dans le répertoire word-count-beam. Ils contiennent les mots uniques du texte d'entrée et le nombre d'occurrences de chaque mot.

Exécuter le pipeline sur le service Dataflow

  • Dans votre interface système ou votre terminal, compilez et exécutez le pipeline WordCount sur le service Dataflow à partir de votre répertoire 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • BUCKET_NAME : nom de votre bucket Cloud Storage
    • REGION : région Dataflow (par exemple, us-central1)

Afficher les résultats

  1. Dans la console Google Cloud, accédez à la page Tâches de Dataflow.

    Accéder à la page "Jobs"

    La page Tâches affiche les détails de toutes les tâches disponibles, y compris leur état. L'état de la tâche wordcount est initialement Running (En cours d'exécution), puis passe à Succeeded (Réussie).

  2. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

    La page Buckets affiche la liste de tous les buckets de stockage de votre projet.

  3. Cliquez sur le bucket de stockage que vous avez créé.

    La page Détails du bucket affiche les fichiers de sortie et les fichiers intermédiaires créés par votre tâche Dataflow.

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, supprimez le projet Google Cloud contenant les ressources.

Supprimer le projet

Le moyen le plus simple d'éviter la facturation consiste à supprimer le projet Google Cloud que vous avez créé dans le cadre de ce guide de démarrage rapide.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Supprimer les ressources individuelles

Si vous souhaitez conserver le projet Google Cloud que vous avez utilisé dans ce guide de démarrage rapide, supprimez les ressources individuelles :

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets

  2. Click the checkbox for the bucket that you want to delete.
  3. To delete the bucket, click Delete, and then follow the instructions.
  4. Révoquez les rôles que vous avez accordés au compte de service Compute Engine par défaut. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :

    • 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: Revoke the authentication credentials that you created, and delete the local credential file.

    gcloud auth application-default revoke
  6. Optional: Revoke credentials from the gcloud CLI.

    gcloud auth revoke

Étapes suivantes