Démarrage rapide avec Python
Dans ce guide de démarrage rapide, vous allez apprendre à utiliser le SDK Apache Beam pour Python afin de créer un programme qui définit un pipeline. Vous exécutez ensuite le pipeline à l'aide d'un exécuteur local direct ou basé sur le cloud, tel que Dataflow.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, et Cloud Resource Manager.
-
Créez un compte de service :
-
Dans la console Google Cloud, accédez à la page Créer un compte de service.
Accéder à la page "Créer un compte de service" - Sélectionnez votre projet.
-
Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for quickstart
. - Cliquez sur Créer et continuer.
-
Attribuez le rôle Project > Owner au compte de service.
Pour accorder le rôle, trouvez la liste Sélectionner un rôle, puis sélectionnez Project > Owner.
- Cliquez sur Continuer.
-
Cliquez sur OK pour terminer la création du compte de service.
Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.
-
-
Créez une clé de compte de service :
- Dans la console Google Cloud, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
- Cliquez sur Keys (Clés).
- Cliquez sur Ajouter une clé, puis sur Créer une clé.
- Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
- Cliquez sur Close (Fermer).
-
Définissez la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
sur le chemin d'accès du fichier JSON contenant vos identifiants. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir. -
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, et Cloud Resource Manager.
-
Créez un compte de service :
-
Dans la console Google Cloud, accédez à la page Créer un compte de service.
Accéder à la page "Créer un compte de service" - Sélectionnez votre projet.
-
Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for quickstart
. - Cliquez sur Créer et continuer.
-
Attribuez le rôle Project > Owner au compte de service.
Pour accorder le rôle, trouvez la liste Sélectionner un rôle, puis sélectionnez Project > Owner.
- Cliquez sur Continuer.
-
Cliquez sur OK pour terminer la création du compte de service.
Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.
-
-
Créez une clé de compte de service :
- Dans la console Google Cloud, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
- Cliquez sur Keys (Clés).
- Cliquez sur Ajouter une clé, puis sur Créer une clé.
- Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
- Cliquez sur Close (Fermer).
-
Définissez la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
sur le chemin d'accès du fichier JSON contenant vos identifiants. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir. - Créez un bucket Cloud Storage :
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
- Cliquez sur Créer un bucket.
- Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Pour passer à l'étape suivante, cliquez sur Continuer.
- Pour nommer votre bucket, saisissez un nom unique. N'incluez aucune information sensible dans le nom des buckets, car leur espace de noms est global et visible par tous.
-
Pour Choisir l'emplacement de stockage des données, procédez comme suit :
- Sélectionnez une option de type d'emplacement.
- Sélectionnez une option Location (Emplacement).
- Pour Choisir une classe de stockage par défaut pour vos données, sélectionnez l'option suivante : Standard
- Pour le champ Choisir comment contrôler l'accès aux objets, sélectionnez une option de Contrôle des accès.
- Sous Paramètres avancés (facultatif), choisissez une méthode de chiffrement, une règle de conservation ou des libellés de bucket.
- Cliquez sur Create (Créer).
- Copiez l'ID du projet Google Cloud et le nom du bucket Cloud Storage. Vous aurez besoin de ces valeurs plus loin dans ce document.
Configurer votre environnement
Dans cette section, utilisez l'invite de commande pour configurer un environnement virtuel Python isolé permettant d'exécuter votre projet de pipeline à l'aide de venv. Ce processus vous permet d'isoler les dépendances d'un projet des dépendances d'autres projets.
Si vous n'avez pas d'invite de commande à votre disposition, vous pouvez utiliser Cloud Shell. Le gestionnaire de packages pour Python 3 est déjà installé dans Cloud Shell, ce qui vous permet d'ignorer la création d'un environnement virtuel.
Pour installer Python, puis créer un environnement virtuel, procédez comme suit :
- Vérifiez que Python 3 et
pip
sont en cours d'exécution sur votre système :python --version python -m pip --version
- Si nécessaire, installez Python 3, puis configurez un environnement virtuel Python : suivez les instructions fournies dans les sections Installer Python et Configurer venv de la page Configurer un environnement de développement Python.
Une fois celui-ci terminé, vous pouvez désactiver l'environnement virtuel en exécutant la commande deactivate
.
Obtenir le SDK Apache Beam
Le SDK Apache Beam est un modèle de programmation Open Source pour les pipelines de données. Vous définissez un pipeline avec un programme Apache Beam, puis l'exécutez à l'aide d'un exécuteur, tel que Dataflow.
Pour télécharger et installer le SDK Apache Beam, procédez comme suit :
- Vérifiez que vous êtes dans l'environnement virtuel Python que vous avez créé dans la section précédente.
Assurez-vous que l'invite commence par
<env_name>
, oùenv_name
est le nom de l'environnement virtuel. - Installez la norme du package Python wheel :
pip install wheel
- Installez la dernière version du SDK Apache Beam pour Python :
pip install 'apache-beam[gcp]'
En fonction de la connexion, l'installation peut prendre un certain temps.
Exécuter le pipeline en local
Pour voir comment un pipeline s'exécute localement, utilisez un module Python prêt à l'emploi wordcount
, qui est inclus dans le package apache_beam
.
L'exemple de pipeline wordcount
effectue les opérations suivantes :
Utiliser un fichier texte comme entrée
Ce fichier texte se trouve dans un bucket Cloud Storage dont le nom de ressource est
gs://dataflow-samples/shakespeare/kinglear.txt
.- Analyser chaque ligne en mots
- Calculer la fréquence des mots en fonction des mots tokenisé.
Pour mettre le pipeline wordcount
en local, procédez comme suit :
- Depuis votre terminal local, exécutez l'exemple
wordcount
:python -m apache_beam.examples.wordcount \ --output outputs
- Affichez le résultat du pipeline :
more outputs*
- Pour quitter, appuyez sur Q.
wordcount.py
sur le dépôt GitHub d'Apache Beam.
Exécuter le pipeline sur le service Dataflow
Dans cette section, exécutez l'exemple de pipelinewordcount
du package apache_beam
sur le service Dataflow. Cet exemple spécifie DataflowRunner
comme paramètre pour --runner
.
- Exécutez le pipeline :
python -m apache_beam.examples.wordcount \ --region DATAFLOW_REGION \ --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output gs://STORAGE_BUCKET/results/outputs \ --runner DataflowRunner \ --project PROJECT_ID \ --temp_location gs://STORAGE_BUCKET/tmp/
Remplacez l'élément suivant :
DATAFLOW_REGION
: point de terminaison régional sur lequel vous souhaitez déployer la tâche Dataflow, par exempleeurope-west1
L'option
--region
remplace la région par défaut définie dans le serveur de métadonnées, votre client local ou les variables d'environnement.STORAGE_BUCKET
: nom Cloud Storage que vous avez copié précédemmentPROJECT_ID
: ID de projet Google Cloud que vous avez copié précédemment
Afficher les résultats
Lorsque vous exécutez un pipeline à l'aide de Dataflow, vos résultats sont stockés dans un bucket Cloud Storage. Dans cette section, vérifiez que le pipeline est en cours d'exécution à l'aide de Cloud Console ou du terminal local.
Cloud Console
Pour afficher vos résultats dans Cloud Console, procédez comme suit :
- Dans Cloud Console, accédez à la page Tâches Dataflow.
La page Tâches affiche les détails de votre tâche
wordcount
, y compris l'état En cours d'exécution, puis Réussite. - Accéder à la page du navigateur Cloud Storage
Dans la liste des buckets de votre projet, cliquez sur le bucket de stockage que vous avez créé précédemment.
Dans le répertoire
wordcount
, les fichiers de sortie créés par votre tâche sont affichés.
Terminal local
Pour afficher les résultats à partir de votre terminal, utilisez l'l'outil gsutil
.
Vous pouvez également exécuter les commandes à partir de Cloud Shell.
- Répertoriez les fichiers de sortie :
gsutil ls -lh "gs://STORAGE_BUCKET/results/outputs*"
- Affichez les résultats dans les fichiers de sortie :
gsutil cat "gs://STORAGE_BUCKET/results/outputs*"
Remplacez STORAGE_BUCKET
par le nom du bucket Cloud Storage utilisé dans le programme de pipeline.
Modifier le code du pipeline
Le pipelinewordcount
dans les exemples précédents fait la distinction entre les mots en majuscules et en minuscules.
Les étapes suivantes montrent comment effectuer des modifications afin que le pipeline wordcount
ne soit pas sensible à la casse.
- Sur votre ordinateur local, téléchargez la dernière copie du code
wordcount
à partir du dépôt GitHub d'Apache Beam. - Depuis le terminal local, exécutez le pipeline :
python wordcount.py --output outputs
- Afficher les résultats :
more outputs*
- Pour quitter, appuyez sur Q.
- Dans l'éditeur de votre choix, ouvrez le fichier
wordcount.py
. - Dans la fonction
run
, examinez les étapes du pipeline :counts = ( lines | 'Split' >> (beam.ParDo(WordExtractingDoFn()).with_output_types(str)) | 'PairWIthOne' >> beam.Map(lambda x: (x, 1)) | 'GroupAndSum' >> beam.CombinePerKey(sum))
Après l'élément
split
, les lignes sont divisées en mots sous forme de chaînes. - Pour mettre les chaînes en minuscules, modifiez la ligne après
split
:counts = ( lines | 'Split' >> (beam.ParDo(WordExtractingDoFn()).with_output_types(str)) | 'lowercase' >> beam.Map(str.lower) | 'PairWIthOne' >> beam.Map(lambda x: (x, 1)) | 'GroupAndSum' >> beam.CombinePerKey(sum))
Cette modification mappe la fonctionstr.lower
sur chaque mot. Cette ligne est équivalente àbeam.Map(lambda word: str.lower(word))
. - Enregistrez le fichier et exécutez la tâche
wordcount
modifiée :python wordcount.py --output outputs
- Affichez les résultats du pipeline modifié :
more outputs*
- Pour quitter, appuyez sur Q.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud :
- Dans la console Google Cloud, accédez à la page Buckets de Cloud Storage.
- Cochez la case correspondant au bucket que vous souhaitez supprimer.
- Pour supprimer le bucket, cliquez sur Supprimer , puis suivez les instructions.
Étape suivante
- Obtenez plus d'informations sur le modèle de programmation Apache Beam.
- Développez un pipeline de manière interactive à l'aide d'un notebook Apache Beam.
- Apprenez à concevoir et à créer votre propre pipeline.
- Utilisez les exemples WordCount et Mobile Gaming.