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 :
Avant de commencer
- 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.
-
To initialize the gcloud CLI, run the following command:
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.
-
-
Make sure 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
-
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.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.
-
-
Make sure 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
-
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.
- Replace
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 commandegcloud projects describe
. - Remplacez
SERVICE_ACCOUNT_ROLE
par chaque rôle individuel.
-
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. - 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.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Set the storage class to
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.
- 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.59.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épertoireword-count-beam
contient un simple fichierpom.xml
et une série d'exemples de pipelines effectuant un décompte des mots dans des fichiers texte. - Vérifiez que votre répertoire
word-count-beam
contient le fichierpom.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
- 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épertoireword-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épertoireword-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épertoireword-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 CloudBUCKET_NAME
: nom de votre bucket Cloud StorageREGION
: région Dataflow (par exemple,us-central1
)
Afficher les résultats
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).
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.
- 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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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 :
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click the checkbox for the bucket that you want to delete.
- To delete the bucket, click Delete, and then follow the instructions.
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
-
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
Étapes suivantes
- En savoir plus sur le modèle de programmation Apache Beam.
- Découvrez comment utiliser Apache Beam pour créer des pipelines.
- Utilisez les exemples WordCount et Mobile Gaming.