SCBL008
Présentation
Dans cet atelier, vous allez utiliser Dataflow et Apache Beam pour migrer des données vers Spanner.
Objectifs
Dans cet atelier, vous allez apprendre à :
- écrire des pipelines ETL à l'aide d'Apache Beam ;
- exécuter des pipelines Apache Beam avec Google Cloud Dataflow.
Prérequis
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- vous disposez d'un temps limité ; n'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient des outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.
-
Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.

-
Cliquez sur Continue (Continuez):

Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.
Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Résultat :
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Pour répertorier les ID de projet, exécutez la commande suivante :
gcloud config list project
Résultat :
[core]
project = <ID_Projet>
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Tâche 1 : Créer un pipeline Apache Beam pour importer des données dans Spanner
-
Dans la barre de titre de la console Google Cloud, cliquez sur Activer Cloud Shell (
). Si vous y êtes invité, cliquez sur Continuer.
-
Exécutez la commande suivante pour définir l'ID de votre projet :
gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
- Exécutez les commandes suivantes pour télécharger les fichiers nécessaires pour réaliser cet atelier :
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
cd training-data-analyst/courses/understanding_spanner/dataflow
- Exécutez le script suivant pour créer une base de données Spanner :
bash ./create-spanner-pets-database.sh {{{project_0.default_region|placeholder_region}}}
- Exécutez la commande suivante pour afficher le schéma. Dans cet atelier, il n'y a qu'une seule table et les valeurs des champs "PetID" et "OwnerID" sont des entiers, et non des chaînes.
cat pets-db-schema.sql
- Exécutez la commande suivante pour afficher les données que vous importez. Notez que les clés primaires et étrangères utilisent des compteurs. Comme vous l'avez vu plus tôt dans le cours, il s'agit d'un anti-modèle lors de l'utilisation Spanner.
Pour le contourner, vous utilisez un pipeline Dataflow écrit en Apache Beam pour inverser les bits des entiers avant d'importer les données dans Spanner.
Cela permet de résoudre le problème des entiers tout en conservant les relations.
cat pets.csv
-
Cliquez sur le bouton Ouvrir l'éditeur, puis ouvrez le fichier de code training-data-analyst/courses/understanding_spanner/dataflow/csv-to-spanner.py. Notez que le pipeline est créé dans la fonction principale (lignes 53 à 68).
Le pipeline lit le fichier CSV, inverse les bits des champs "PetID" et "OwnerID", puis écrit les données dans Spanner.
La fonction reverse_bits commence à la ligne 21.
-
Revenez au terminal. Pour exécuter ce pipeline, vous devez d'abord installer les éléments prérequis Python à l'aide des commandes suivantes :
pip install apache-beam[gcp]==2.42.0
pip install apache-beam[dataframe]
- Exécutez le pipeline. (Ce code exécute le pipeline en local dans Cloud Shell. Vous n'avez pas besoin d'accéder à Dataflow.)
python csv-to-spanner.py
- Une fois le pipeline terminé, exécutez la requête suivante pour afficher les résultats :
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
- Exécutez la commande suivante pour supprimer les données que vous venez d'ajouter :
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='DELETE FROM Pets WHERE True'
- Vous exécuterez ensuite le code à l'aide du service Dataflow.
Tâche 2 : Exécuter un job Dataflow
- Pour exécuter le job à l'aide de Dataflow, vous avez besoin d'un bucket Cloud Storage pour les entrées, la préproduction et les sorties. Utilisez la commande ci-dessous pour créer un bucket avec votre ID de projet (le nom du bucket devrait ainsi être unique). Copiez le fichier
pets.csv dans le bucket. Exécutez chacune de ces commandes individuellement, et non en même temps.
gsutil mb -l {{{project_0.default_region|place_holder_text}}} gs://$DEVSHELL_PROJECT_ID-data-flow
gsutil cp ./pets.csv gs://$DEVSHELL_PROJECT_ID-data-flow
-
Accédez à Cloud Storage dans la console et vérifiez que le bucket a été créé et que le fichier a été copié.
-
Exécutez les commandes suivantes pour vérifier que l'API Dataflow est bien activée dans votre projet.
gcloud services disable dataflow.googleapis.com
gcloud services enable dataflow.googleapis.com
- Exécutez le pipeline avec Dataflow en utilisant la commande suivante :
python csv-to-spanner.py \
--region {{{project_0.default_region|place_holder_text}}} \
--worker_machine_type e2-standard-2 \
--input gs://$DEVSHELL_PROJECT_ID-data-flow/pets.csv \
--output gs://$DEVSHELL_PROJECT_ID-data-flow/results/outputs \
--runner DataflowRunner \
--project $DEVSHELL_PROJECT_ID \
--temp_location gs://$DEVSHELL_PROJECT_ID-data-flow/tmp/
-
Utilisez le menu de navigation pour accéder à la page "Jobs Dataflow". L'affichage du job peut prendre quelques instants. Cliquez sur le bouton Actualiser jusqu'à ce qu'il s'affiche. Vous pouvez ensuite cliquer sur le job pour afficher ses détails. L'exécution du job dans le service Dataflow prend plusieurs minutes, car il crée un cluster ou une ou plusieurs VM auxquels envoyer le job.
-
Comme précédemment, vérifiez que les données ont bien été ajoutées à votre base de données Spanner. Exécutez la requête suivante pour afficher les données chargées :
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
- Supprimez l'instance Spanner pour qu'elle ne vous soit pas facturée.
Félicitations ! Vous avez utilisé Dataflow et Apache Beam pour migrer des données vers Spanner.
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur End Lab (Terminer l'atelier). Qwiklabs supprime les ressources que vous avez utilisées, puis efface le compte.
Vous avez alors la possibilité de noter votre expérience au cours de l'atelier. Sélectionnez le nombre d'étoiles correspondant à votre note, saisissez un commentaire, puis cliquez sur Submit (Envoyer).
Voici à quoi correspond le nombre d'étoiles que vous pouvez attribuer à un atelier :
- 1 étoile = très insatisfait(e)
- 2 étoiles = insatisfait(e)
- 3 étoiles = ni insatisfait(e), ni satisfait(e)
- 4 étoiles = satisfait(e)
- 5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez utiliser l'onglet Support.
Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.