Diffuser des données en streaming depuis Pub/Sub vers BigQuery


Ce tutoriel utilise le modèle abonnement Pub/Sub vers BigQuery pour créer et exécuter un job de modèle Dataflow à l'aide de la console Google Cloud ou de Google Cloud CLI. Il présente un exemple de pipeline de traitement par flux qui lit les messages encodés en JSON à partir de Pub/Sub, utilise une fonction définie par l'utilisateur (UDF) pour étendre le modèle de diffusion fourni par Google, transforme les données des messages avec le SDK Apache Beam et écrit les résultats dans une table BigQuery.

Les pipelines d'analyse de flux et d'intégration de données utilisent Pub/Sub pour ingérer et distribuer les données. Pub/Sub vous permet de créer des systèmes de producteurs et de consommateurs d'événements, appelés éditeurs et abonnés. Les éditeurs envoient des événements au service Pub/Sub de manière asynchrone, et Pub/Sub transmet les événements à tous les services qui doivent y réagir.

Dataflow est un service entièrement géré permettant de transformer et d'enrichir les données par flux (en temps réel) et par lots. Il fournit un environnement de développement de pipeline simplifié qui utilise le SDK Apache Beam pour transformer les données entrantes et générer les données transformées.

L'avantage de ce workflow est que vous pouvez utiliser les fonctions définies par l'utilisateur pour transformer les données des messages avant qu'elles ne soient écrites dans BigQuery. Une autre option consiste à utiliser un abonnement BigQuery, qui écrit les messages Pub/Sub directement dans BigQuery, sans utiliser Dataflow. Cette option n'accepte qu'une distribution de type "au moins une fois". Elle n'est pas compatible avec le traitement de type "exactement une fois".

Objectifs

  • Créer un sujet Pub/Sub
  • Créer un ensemble de données BigQuery avec une table et un schéma
  • Utiliser un modèle de streaming fourni par Google pour diffuser des données en streaming de votre abonnement Pub/Sub vers BigQuery à l'aide de Dataflow.
  • Créez une fonction définie par l'utilisateur pour étendre le modèle de streaming fourni par Google.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • Dataflow
  • Pub/Sub
  • Cloud Storage
  • Cloud Scheduler
  • BigQuery

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

Cette section explique comment sélectionner un projet, activer des API et attribuer les rôles appropriés au compte utilisateur et au compte de service du nœud de calcul.

Console

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs.

    Enable the APIs

  8. Pour suivre la procédure décrite dans ce tutoriel, votre compte utilisateur doit disposer du rôle Utilisateur du compte de service. Le compte de service Compute Engine par défaut doit disposer des rôles suivants : Nœud de calcul Dataflow, Administrateur Dataflow, Éditeur Pub/Sub, Administrateur des objets de l'espace de stockage et Éditeur de données BigQuery. Pour ajouter les rôles requis dans la console Google Cloud, procédez comme suit :

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM
    2. Sélectionnez votre projet.
    3. Sur la ligne contenant votre compte utilisateur, cliquez sur Modifier le compte principal, puis sur Ajouter un autre rôle.
    4. Dans la liste déroulante, sélectionnez le rôle Utilisateur du compte de service.
    5. Sur la ligne contenant le compte de service Compute Engine par défaut, cliquez sur Modifier le compte principal, puis sur Ajouter un autre rôle.
    6. Dans la liste déroulante, sélectionnez le rôle Nœud de calcul Dataflow.
    7. Répétez la procédure pour les rôles Administrateur Dataflow, Éditeur Pub/Sub, Administrateur des objets de l'espace de stockage et Éditeur de données BigQuery, puis cliquez surEnregistrer.

      Pour en savoir plus sur l'attribution de rôles, consultez la page Attribuer un rôle IAM à l'aide de la console.

gcloud

  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 Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  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 Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  14. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  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.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • PROJECT_NUMBER : votre numéro de projet. Pour trouver votre numéro de projet, utilisez la commande gcloud projects describe.
    • SERVICE_ACCOUNT_ROLE : chaque rôle individuel.

Créer l'exemple de source et de récepteur

Cette section explique comment créer les éléments suivants :

  • Une source de données par flux utilisant Pub/Sub
  • Un ensemble de données pour charger les données dans BigQuery

Créer un bucket Cloud Storage

Commencez par créer un bucket Cloud Storage à l'aide de la console Google Cloud ou de Google Cloud CLI. Le pipeline Dataflow utilise ce bucket comme emplacement de stockage temporaire.

Console

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

    Accéder à la page "Buckets"

  2. Cliquez sur Créer un bucket.

  3. Sur la page Créer un bucket, sous Nommer votre bucket, saisissez un nom qui respecte les règles de dénomination des buckets. Les noms des buckets Cloud Storage doivent être uniques. Ne sélectionnez pas les autres options.

  4. Cliquez sur Créer.

gcloud

Exécutez la commande gcloud storage buckets create :

gcloud storage buckets create gs://BUCKET_NAME

Remplacez BUCKET_NAME par un nom qui respecte les règles de dénomination des buckets pour votre bucket Cloud Storage. Les noms des buckets Cloud Storage doivent être uniques.

Créer un sujet et un abonnement Pub/Sub

Créez un sujet Pub/Sub, puis créez un abonnement associé à ce sujet.

Console

Pour créer un sujet, procédez comme suit.

  1. Dans la console Google Cloud, accédez à la page Sujets de Pub/Sub.

    Accéder aux sujets

  2. Cliquez sur Create topic (Créer un sujet).

  3. Dans le champ ID du sujet, saisissez un ID pour votre sujet. Pour savoir comment nommer un sujet, consultez la section Consignes de dénomination d'un sujet ou d'un abonnement.

  4. Conservez l'option Ajouter un abonnement par défaut. Ne sélectionnez pas les autres options.

  5. Cliquez sur Créer un sujet.

gcloud

Pour créer un sujet, exécutez la commande gcloud pubsub topics create. Pour savoir comment nommer un abonnement, consultez la section Consignes de dénomination d'un sujet ou d'un abonnement.

gcloud pubsub topics create TOPIC_ID

Remplacez TOPIC_ID par le nom de votre sujet Pub/Sub.

Pour créer un abonnement associé à votre sujet, exécutez la commande gcloud pubsub subscriptions create :

gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID

Remplacez SUBSCRIPTION_ID par le nom de votre abonnement Pub/Sub.

Créer et exécuter les tâches Cloud Scheduler

Créer et exécuter deux tâches Cloud Scheduler : une qui publie des avis positifs et une seconde qui publie des avis négatifs sur votre sujet Pub/Sub.

Console

Créer une tâche Cloud Scheduler pour les avis positifs.

  1. Accédez à la page Cloud Scheduler de la console.

    Accéder à Cloud Scheduler

  2. Cliquez sur le bouton Créer une tâche.

  3. Saisissez le nom positive-ratings-publisher.

  4. Sélectionnez une région Dataflow proche de l'emplacement où vous exécutez les commandes dans ce tutoriel. La valeur de la variable REGION doit être un nom de région valide. Pour en savoir plus sur les régions et les emplacements, consultez la page Emplacements Dataflow.

  5. Dans le champ Fréquence, spécifiez la fréquence de votre tâche en utilisant le format unix-cron : * * * * *

    Reportez-vous à la rubrique Configurer les programmations de tâches Cron pour en savoir plus.

  6. Sélectionnez votre fuseau horaire.

  7. Cliquez sur Continuer.

  8. Dans la liste Cible, sélectionnez Pub/Sub.

  9. Sélectionnez le nom de votre sujet dans la liste.

  10. Ajoutez la chaîne Message suivante à envoyer à votre cible :{"url": "https://beam.apache.org/", "review": "positive"}

  11. Cliquez sur Créer.

Vous disposez maintenant d'une tâche Cron qui envoie un message avec un avis positif à votre sujet Pub/Sub toutes les minutes. Votre fonction Cloud Function s'abonne à ce sujet.

Créez une tâche Cloud Scheduler pour les avis négatifs.

  1. Sur la page Cloud Scheduler de la console, cliquez sur le bouton Créer une tâche.

  2. Saisissez le nom negative-ratings-publisher.

  3. Sélectionnez une région dans laquelle votre tâche doit s'exécuter.

  4. Dans le champ Fréquence, spécifiez la fréquence de votre tâche en utilisant le format unix-cron : */2 * * * *

    Reportez-vous à la rubrique Configurer les programmations de tâches Cron pour en savoir plus.

  5. Sélectionnez votre fuseau horaire.

  6. Cliquez sur Continuer.

  7. Dans la liste Cible, sélectionnez Pub/Sub.

  8. Sélectionnez le nom de votre sujet dans la liste.

  9. Ajoutez la chaîne Message suivante à envoyer à votre cible :{"url": "https://beam.apache.org/", "review": "negative"}

  10. Cliquez sur Créer.

Vous disposez maintenant d'une tâche Cron qui envoie un message avec un avis négatif à votre sujet Pub/Sub toutes les deux minutes. Votre fonction Cloud Function s'abonne à ce sujet.

gcloud

  1. Pour créer une tâche Cloud Scheduler pour ce tutoriel, utilisez la commande gcloud scheduler jobs create. Cette étape crée un éditeur pour les "avis positifs" qui publie un message par minute.

    gcloud scheduler jobs create pubsub positive-ratings-publisher \
      --schedule="* * * * *" \
      --location=DATAFLOW_REGION \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "positive"}'
    

    Remplacez DATAFLOW_REGION par la région dans laquelle déployer votre job Dataflow. Sélectionnez une région Dataflow proche de l'emplacement où vous exécutez les commandes dans ce tutoriel. La valeur de la variable REGION doit être un nom de région valide.

  2. Pour démarrer la tâche Cloud Scheduler, utilisez la commande gcloud scheduler jobs run.

    gcloud scheduler jobs run --location=DATAFLOW_REGION positive-ratings-publisher
    
  3. Créez et exécutez un autre éditeur similaire pour les "avis négatifs", qui publie un message toutes les deux minutes. Cette étape crée un éditeur pour les "avis négatifs", qui publie un message toutes les deux minutes.

    gcloud scheduler jobs create pubsub negative-ratings-publisher \
      --schedule="*/2 * * * *" \
      --location=DATAFLOW_REGION  \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "negative"}'
    
  4. Démarrez la deuxième tâche Cloud Scheduler.

    gcloud scheduler jobs run --location=DATAFLOW_REGION negative-ratings-publisher
    

Créer un ensemble de données BigQuery

Créez un ensemble de données et une table BigQuery avec le schéma approprié pour votre sujet Pub/Sub.

Console

créer un ensemble de données BigQuery ;

  1. Ouvrez la page BigQuery dans la console Google Cloud.

    Accéder à BigQuery

  2. Dans le panneau Explorer, sélectionnez le projet dans lequel vous souhaitez créer l'ensemble de données.

  3. Développez l'option Actions, puis cliquez sur Créer un ensemble de données.

  4. Sur la page Create dataset (Créer un ensemble de données), procédez comme suit :

    • Dans le champ ID de l'ensemble de données, saisissez tutorial_dataset.
    • Dans la liste déroulante permettant d'indiquer l'emplacement des données, sélectionnez un emplacement géographique pour l'ensemble de données. Une fois l'ensemble de données créé, l'emplacement ne peut plus être modifié.

    • Ne sélectionnez pas les autres options.

    • Cliquez sur Créer un ensemble de données.

Créez une table BigQuery à l'aide d'un schéma.

  1. Dans le panneau Explorateur, développez votre projet et sélectionnez l'ensemble de données tutorial_dataset.

  2. Développez l'option Actions puis cliquez sur Ouvrir.

  3. Dans le panneau de détails, cliquez sur Créer une table.

  4. Dans la section Source de la page Créer une table, sélectionnez Table vide.

  5. Dans la section Destination de la page Créer une table :

    • Vérifiez que le champ Nom de l'ensemble de données est défini sur tutorial_dataset.
    • Dans le champ Nom de la table, saisissez tutorial.
    • Vérifiez que Type de table est défini sur Table native.
  6. Dans la section Schema (Schéma), saisissez la définition du schéma. Activez Modifier sous forme de texte et saisissez le schéma de table suivant sous forme de tableau JSON.

    [
      {
        "mode": "NULLABLE",
        "name": "url",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "review",
        "type": "STRING"
      }
    ]
    
  7. Sous Paramètres de partitionnement et de clustering, conservez la valeur par défaut : No partitioning.

  8. Dans la section Options avancées, pour Chiffrement, conservez la valeur par défaut : Google-managed key. Par défaut, Dataflow chiffre le contenu client stocké au repos.

  9. Cliquez sur Créer une table.

gcloud

Utilisez la commande bq mk pour créer la base de données.

bq --location=DATAFLOW_REGION mk \
PROJECT_ID:tutorial_dataset

Remplacez PROJECT_ID par l'ID de votre projet.

Exécutez la commande bq mk avec l'option --table ou -t pour créer une table dans votre ensemble de données.

bq mk \
    --table \
    PROJECT_ID:tutorial_dataset.tutorial \
    url:STRING,review:STRING

Créer une fonction définie par l'utilisateur

Vous pouvez éventuellement créer une fonction JavaScript définie par l'utilisateur pour étendre le modèle d'abonnement Pub/Sub vers BigQuery fourni par Google. Les fonctions définies par l'utilisateur permettent de définir des transformations de données non présentes dans le modèle et de les injecter dans le modèle.

La fonction définie par l'utilisateur suivante valide les URL des notes entrantes. Les notes sans URL ou avec des URL incorrectes sont transférées vers une table de sortie différente, avec pour suffixe _error_records, également appelée table de lettres mortes, dans le même projet et le même ensemble de données.

JavaScript

/**
 * User-defined function (UDF) to transform events
 * as part of a Dataflow template job.
 *
 * @param {string} inJson input Pub/Sub JSON message (stringified)
 */
 function process(inJson) {
    const obj = JSON.parse(inJson);
    const includePubsubMessage = obj.data && obj.attributes;
    const data = includePubsubMessage ? obj.data : obj;

    if (!data.hasOwnProperty('url')) {
      throw new Error("No url found");
    } else if (data.url !== "https://beam.apache.org/") {
      throw new Error("Unrecognized url");
    }

    return JSON.stringify(obj);
  }

Enregistrez cet extrait JavaScript dans le bucket Cloud Storage créé précédemment.

Exécuter le pipeline

Exécutez un pipeline de flux de données à l'aide du modèle d'abonnement Pub/Sub vers BigQuery fourni par Google. Le pipeline récupère les données entrantes du sujet Pub/Sub et les génère dans votre ensemble de données BigQuery.

Console

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

    Accéder aux tâches

  2. Cliquez sur Create job from template (Créer une tâche à partir d'un modèle).

  3. Saisissez un nom de tâche pour votre tâche Dataflow.

  4. Pour le Point de terminaison régional, sélectionnez une région pour votre job Dataflow.

  5. Pour Modèle Dataflow, sélectionnez le modèle Abonnement Pub/Sub vers BigQuery.

  6. Dans le champ Table BigQuery de sortie, saisissez ce qui suit :

    PROJECT_ID:tutorial_dataset.tutorial
    
  7. Dans le champ Abonnement d'entrée Pub/Sub, saisissez les informations suivantes :

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID
    

    Remplacez PROJECT_ID par l'ID du projet dans lequel vous avez créé votre ensemble de données BigQuery et SUBSCRIPTION_ID par le nom de votre abonnement Pub/Sub.

  8. Dans le champ Emplacement temporaire, saisissez ce qui suit :

    gs://BUCKET_NAME/temp/
    

    Remplacez BUCKET_NAME par le nom de votre bucket Cloud Storage. Le dossier temp stocke les fichiers temporaires, comme la tâche de pipeline en préproduction.

  9. Facultatif : pour inclure une fonction définie par l'utilisateur pour le job, développez la section Paramètres facultatifs.

    1. Pour le Chemin d'accès aux fonctions JavaScript définies par l'utilisateur dans Cloud Storage, saisissez les informations suivantes :

      gs://BUCKET_NAME/dataflow_udf_transform.js
      
    2. Dans le champ JavaScript UDF name (Nom de la fonction JavaScript définie par l'utilisateur), saisissez les éléments suivants :

      process
      
  10. Cliquez sur Exécuter la tâche.

Pour vérifier si le modèle peut transférer des messages vers une table de lettres mortes, publiez certaines notes sans URL ou avec des URL incorrectes.

  1. Accéder à la page Sujets Pub/Sub

  2. Cliquez sur votre TOPIC_ID.

  3. Accédez à la section Messages.

  4. Cliquez sur Publier un message.

  5. Saisissez certaines notes sans URL ou avec des URL incorrectes dans le corps du message. Exemple :

    {"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}
    
  6. Cliquez sur Publier.

gcloud

Pour exécuter le modèle dans votre shell ou votre terminal, utilisez la commande gcloud dataflow jobs run.

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial

Remplacez JOB_NAME par un nom unique de votre choix.

Vous pouvez également exécuter le modèle avec la fonction définie par l'utilisateur à l'aide de la commande suivante :

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial,\
javascriptTextTransformGcsPath=gs://BUCKET_NAME/dataflow_udf_transform.js,\
javascriptTextTransformFunctionName=process

Pour vérifier si le modèle peut transférer des messages vers une table de lettres mortes, publiez certaines notes sans URL ou URL incorrectes. Exemple :

gcloud pubsub topics publish TOPIC_ID \
  --message='{"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}'

Afficher les résultats

Affichez les données écrites dans vos tables BigQuery.

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.
    Accéder à la page "BigQuery"

  2. Dans l'éditeur de requête, saisissez la requête suivante :

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial`
    LIMIT 1000
    

    L'affichage des données dans votre table peut prendre jusqu'à une minute.

    La requête renvoie les lignes qui ont été ajoutées à votre table au cours des dernières 24 heures. Vous pouvez également exécuter des requêtes en SQL standard.

    Si vous souhaitez que certains enregistrements d'erreur soient écrits dans votre table de lettres mortes, utilisez le nom de table tutorial_error_records dans la requête. Exemple :

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
    LIMIT 1000
    

gcloud

Vérifiez les résultats dans BigQuery en exécutant la requête suivante :

bq query --use_legacy_sql=false 'SELECT * FROM `'"PROJECT_ID.tutorial_dataset.tutorial"'`'

Pendant l'exécution de ce pipeline, de nouvelles lignes sont ajoutées chaque minute à la table BigQuery.

Si vous souhaitez que certains enregistrements d'erreur soient écrits dans votre table de lettres mortes, utilisez le nom de table tutorial_error_records dans la requête. Exemple :

SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
LIMIT 1000

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

Le moyen le plus simple d'éviter la facturation consiste à supprimer le projet Google Cloud que vous avez créé pour le tutoriel.

Console

  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.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Supprimer les ressources individuelles

Si vous souhaitez réutiliser le projet ultérieurement, vous pouvez le conserver, mais supprimez les ressources que vous avez créées au cours du tutoriel.

Arrêter le pipeline Dataflow

Console

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

    Accéder aux tâches

  2. Cliquez sur la tâche que vous souhaitez arrêter.

    Pour arrêter une tâche, son état doit être en cours d'exécution.

  3. Sur la page des détails de la tâche, cliquez sur Arrêter.

  4. Cliquez sur Annuler.

  5. Pour confirmer votre choix, cliquez sur Arrêter la tâche.

gcloud

Pour annuler votre tâche Dataflow, utilisez la commande gcloud dataflow jobs.

gcloud dataflow jobs list \
  --filter 'NAME=JOB_NAME AND STATE=Running' \
  --format 'value(JOB_ID)' \
  --region "DATAFLOW_REGION" \
  | xargs gcloud dataflow jobs cancel --region "DATAFLOW_REGION"

Nettoyer les ressources du projet Google Cloud

Console

  1. Supprimez les jobs Cloud Scheduler.

    1. Accédez à la page Cloud Scheduler dans la console Google Cloud.

      Accéder à Cloud Scheduler

    2. Sélectionnez vos tâches.

    3. Cliquez sur le bouton Supprimer en haut de la page et confirmez la suppression.

  2. Supprimez le sujet et l'abonnement Pub/Sub.

    1. Accédez à la page des Sujets Pub/Sub dans la console Google Cloud.

      Accéder aux sujets

    2. Sélectionnez le sujet que vous avez créé.

    3. Cliquez sur Delete (Supprimer) pour supprimer définitivement le sujet.

    4. Accédez à la page Abonnements de Pub/Sub dans la console Google Cloud.

      Accéder aux abonnements

    5. Sélectionnez l'abonnement créé avec votre sujet.

    6. Cliquez sur Supprimer pour supprimer définitivement l'abonnement.

  3. Supprimez la table et l'ensemble de données BigQuery.

    1. Dans la console Google Cloud, accédez à la page BigQuery.

      Accéder à BigQuery

    2. Sur le panneau Explorateur, développez votre projet.

    3. À côté de l'ensemble de données que vous souhaitez supprimer, cliquez sur Afficher les actions, puis sur Supprimer.

  4. Supprimez le bucket Cloud Storage.

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

      Accéder à la page "Buckets"

    2. Sélectionnez le bucket que vous souhaitez supprimer, cliquez sur Supprimer, puis suivez les instructions.

gcloud

  1. Pour supprimer les jobs Cloud Scheduler, utilisez la commande gcloud scheduler jobs delete.

    gcloud scheduler jobs delete negative-ratings-publisher --location=DATAFLOW_REGION
    
    gcloud scheduler jobs delete positive-ratings-publisher --location=DATAFLOW_REGION
    
  2. Pour supprimer l'abonnement et le sujet Pub/Sub, utilisez les commandes gcloud pubsub subscriptions delete et gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  3. Pour supprimer la table BigQuery, utilisez la commande bq rm.

    bq rm -f -t PROJECT_ID:tutorial_dataset.tutorial
    
  4. Supprimez l'ensemble de données BigQuery. L'ensemble de données seul ne génère aucuns frais.

    bq rm -r -f -d PROJECT_ID:tutorial_dataset
    
  5. Pour supprimer le bucket Cloud Storage, utilisez la commande gcloud storage rm. Le bucket seul ne génère aucuns frais.

    gcloud storage rm gs://BUCKET_NAME --recursive
    

Révoquer les identifiants

Console

Si vous conservez votre projet, révoquez les rôles que vous avez accordés au compte de service Compute Engine par défaut.

  1. Dans la console Google Cloud, accédez à la page IAM.

Accéder à IAM

  1. Sélectionnez un projet, un dossier ou une organisation.

  2. Recherchez la ligne contenant le compte principal dont vous souhaitez révoquer l'accès. Sur cette ligne, cliquez sur Modifier le compte principal.

  3. Cliquez sur le bouton Supprimer () pour chaque rôle que vous souhaitez révoquer, puis cliquez sur Enregistrer.

gcloud

  • Si vous conservez votre projet, 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.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
      gcloud projects remove-iam-policy-binding <var>PROJECT_ID</var> \
      --member=serviceAccount:<var>PROJECT_NUMBER</var>-compute@developer.gserviceaccount.com \
      --role=<var>ROLE</var>
    

  • 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