Découvrir et cataloguer les données Cloud Storage

Ce document explique comment utiliser la découverte automatique des données Cloud Storage.

La découverte automatique Dataplex est une fonctionnalité de BigQuery qui vous permet d'analyser les données dans des buckets Cloud Storage pour extraire et ensuite cataloguer les métadonnées. Lors de l'analyse, la découverte automatique crée des tables BigLake ou externes pour les données structurées et des tables d'objets pour les données non structurées, que vous pouvez ensuite utiliser pour l'analyse et l'IA. Les tables sont automatiquement cataloguées dans Dataplex Catalog, que vous pouvez rechercher ou parcourir.

Pour utiliser la découverte automatique des données Cloud Storage, vous devez créer et exécuter une analyse de découverte.

Présentation

Une analyse de découverte effectue les opérations suivantes:

  • Analyse les données du bucket ou du chemin d'accès Cloud Storage.
  • Regroupe les fichiers structurés et semi-structurés dans des tableaux.
  • Collecte les métadonnées, telles que le nom de la table, le schéma et la définition de la partition.
  • Crée et met à jour des tables BigLake, externes ou d'objets dans BigQuery à l'aide du schéma et de la définition de partition.

Pour les données non structurées, telles que les images et les vidéos, l'analyse de découverte détecte et enregistre des groupes de fichiers qui partagent le même type de support que les tables d'objets BigLake. Par exemple, si gs://images/group1 contient des images GIF et gs://images/group2 des images JPEG, l'analyse de découverte détecte et enregistre deux ensembles de fichiers.

Pour les données structurées, telles qu'Avro, l'analyse de découverte enregistre des groupes de fichiers en tant que tables externes BigLake et ne détecte les fichiers que s'ils se trouvent dans des dossiers contenant le même format de données et le même schéma compatible.

L'analyse de découverte est compatible avec les formats de données structurées et semi-structurées suivants:

L'analyse de découverte est compatible avec les formats de compression suivants pour les données structurées et semi-structurées:

  • Compression interne pour les formats suivants:

    Compression Exemple d'extension de fichier Format accepté
    gzip .gz.parquet Parquet
    lz4 .lz4.parquet Parquet
    Snappy .snappy.parquet Parquet, ORC, Avro
    lzo .lzo.parquet Parquet, ORC
  • Compression externe pour les fichiers JSON et CSV:

    • gzip
    • bzip2

Les tables détectées sont enregistrées dans BigQuery en tant que tables externes BigLake, tables d'objets BigLake ou tables externes. Les données sont ainsi disponibles pour l'analyse dans BigQuery. La mise en cache des métadonnées pour les tables BigLake et les tables d'objets est également activée. Toutes les tables BigLake sont automatiquement ingérées dans le catalogue Dataplex pour la recherche et la découverte.

Avant de commencer

Assurez-vous de disposer des autorisations IAM (Identity and Access Management) nécessaires pour effectuer les tâches décrites dans ce document.

Rôles requis pour le compte de service

Avant de commencer, attribuez les autorisations IAM au compte de service Dataplex de votre projet:

  service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
  

Remplacez PROJECT_NUMBER par le projet dans lequel l'API Dataplex est activée.

Pour vous assurer que le compte de service Dataplex dispose des autorisations nécessaires pour exécuter une analyse de découverte, demandez à votre administrateur d'accorder au compte de service Dataplex les rôles IAM suivants:

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour exécuter une analyse de découverte. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour exécuter une analyse de découverte:

  • bigquery.datasets.create sur le projet de source de données
  • storage.buckets.get sur le bucket de la source de données
  • storage.objects.get sur le bucket de la source de données
  • storage.objects.list sur le bucket de la source de données
  • bigquery.datasets.get sur le projet de source de données
  • Fournissez une connexion :
    • bigquery.connections.delegate
    • bigquery.connections.use

Votre administrateur peut également attribuer au compte de service Dataplex ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Rôles requis pour les utilisateurs finaux

Pour vous assurer que vous disposez des autorisations nécessaires pour utiliser l'API DataScan, demandez à votre administrateur de vous accorder les rôles IAM suivants:

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour utiliser l'API DataScan. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour utiliser l'API DataScan:

  • Créez une analyse DataScan : dataplex.datascans.create dans votre projet
  • Supprimer une analyse de données : dataplex.datascans.delete sur votre projet ou une ressource d'analyse de données
  • Afficher les détails de DataScan en excluant les résultats : dataplex.datascans.get sur votre projecteur une ressource DataScan
  • Afficher les détails de DataScan, y compris les résultats : dataplex.datascans.getData dans votre projet ou dans une ressource DataScan
  • Lister les analyses de données : dataplex.datascans.list sur votre projet ou une ressource d'analyse de données
  • Exécuter une analyse de données : dataplex.datascans.run sur votre projet ou une ressource DataScan
  • Modifier la description d'une analyse de données : dataplex.datascans.update sur votre projecteur, une ressource d'analyse de données
  • Afficher les autorisations IAM de DataScan : dataplex.datascans.getIamPolicy sur votre projet ou une ressource DataScan
  • Définissez les autorisations IAM sur DataScan : dataplex.datascans.setIamPolicy sur votre projet ou une ressource DataScan

Votre administrateur peut également vous attribuer ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Créer une analyse de découverte

Pour découvrir des données, vous devez créer et exécuter une analyse de découverte. Vous pouvez définir un calendrier pour l'analyse ou l'exécuter à la demande. Pour créer et exécuter une analyse de découverte, vous devez disposer de l'autorisation dataplex.datascans.create.

Lorsque l'analyse de découverte s'exécute, elle crée un ensemble de données dans BigQuery qui correspond au bucket Cloud Storage analysé. Le nom de l'ensemble de données BigQuery est identique à celui du bucket Cloud Storage. Les caractères non valides dans le nom du bucket sont remplacés par un trait de soulignement. Si le nom de l'ensemble de données n'est pas disponible, un postfixe est ajouté (par exemple, _discovered_001). L'ensemble de données contient les tables externes BigLake ou non BigLake créées par l'analyse de découverte pour une analyse plus approfondie.

Console

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

    Accéder à BigQuery

  2. Dans Explorer, cliquez sur Ajouter.

  3. Dans le volet Ajouter de la section Sources populaires, cliquez sur Créer automatiquement des tables externes et BigLake à partir de GCS.

  4. Dans le volet Créer une table, dans la section Source, configurez les détails suivants sur les données à analyser:

    1. Attribuez un nom à l'analyse.
    2. Dans le champ ID de numérisation, saisissez un ID unique qui respecte la convention d'attribution de nom des ressources. Si vous ne fournissez pas d'ID, l'analyse de découverte génère l'ID d'analyse.
    3. Facultatif: fournissez une description de l'analyse.
    4. Pour spécifier le bucket Cloud Storage contenant les fichiers à analyser, accédez au bucket dans le champ Bucket (Bucket), puis sélectionnez-le.
    5. Facultatif: définissez les données à inclure ou à exclure de l'analyse de découverte en fournissant une liste de modèles glob.

      • Inclure: si seul un sous-ensemble des données doit être analysé, fournissez une liste de modèles globaux correspondant aux objets à inclure.
      • Exclure: fournit une liste de formats glob correspondant aux objets à exclure.

      Par exemple, si vous souhaitez exclure gs://test_bucket/foo/.. de l'analyse de découverte, saisissez **/foo/* comme chemin d'exclusion. Les guillemets provoquent des erreurs. Veillez à saisir **/foo/* au lieu de "**/foo/*".

      Si vous fournissez à la fois des modèles d'inclusion et d'exclusion, les modèles d'exclusion sont appliqués en premier.

    6. Pour créer des tables BigLake à partir des données numérisées, indiquez votre ID de connexion à la ressource Google Cloud dans le champ ID de connexion. Pour en savoir plus, consultez la section Connexions de ressources Google Cloud.

      Si vous ne fournissez pas d'ID de connexion de ressource, l'analyse de découverte crée des tables externes autres que BigLake.

  5. Dans la section Fréquence de découverte, configurez la fréquence d'exécution de l'analyse de découverte:

    • Répéter: l'analyse s'exécute selon un calendrier prédéfini. Indiquez l'heure de début, les jours d'exécution de l'analyse et la fréquence, par exemple toutes les heures.

    • À la demande: l'analyse s'exécute à la demande.

  6. Facultatif: dans la section Spécifications JSON ou CSV, indiquez comment l'analyse doit traiter les fichiers JSON et CSV. Cliquez sur Spécifications JSON ou CSV.

    1. Pour configurer les options JSON, sélectionnez Activer les options d'analyse JSON.
      • Désactiver l'inférence de type: indique si l'analyse de découverte doit inférer les types de données lors de l'analyse des données. Si vous désactivez l'inférence de type pour les données JSON, toutes les colonnes sont enregistrées en tant que types primitifs, tels que chaîne, nombre ou booléen.
      • Format d'encodage: l'encodage des caractères des données, par exemple UTF-8, US-ASCII ou ISO-8859-1. Si vous ne spécifiez pas de valeur, UTF-8 est utilisé par défaut.
    2. Pour configurer les options CSV, cochez Activer les options d'analyse CSV.
      • Désactiver l'inférence de type: indique si l'analyse de découverte doit inférer les types de données lors de l'analyse des données. Si vous désactivez l'inférence de type pour les données CSV, toutes les colonnes sont enregistrées en tant que chaînes.
      • Lignes d'en-tête: nombre de lignes d'en-tête, soit 0, soit 1. Si vous spécifiez la valeur 0, l'analyse de découverte infère les titres et extrait les noms de colonnes du fichier. La valeur par défaut est 0.
      • Caractère délimiteur de colonne: caractère utilisé pour séparer les valeurs. Indiquez un seul caractère, \r (retour chariot) ou \n (saut de ligne). La valeur par défaut est une virgule (,).
      • Format d'encodage: encodage de caractères des données, par exemple UTF-8, US-ASCII ou ISO-8859-1. Si vous ne spécifiez pas de valeur, UTF-8 est utilisé par défaut.
  7. Une fois la configuration de l'analyse de découverte des données terminée, cliquez sur Créer (pour une analyse planifiée) ou sur Exécuter maintenant (pour une analyse à la demande).

    Une analyse planifiée est exécutée selon la planification que vous avez définie.

    Une analyse à la demande est exécutée une fois au départ lorsque vous la créez. Vous pouvez l'exécuter à tout moment. L'exécution de l'analyse peut prendre plusieurs minutes.

REST

Pour créer une analyse de découverte, utilisez la méthode dataScans.create.

Surveiller une analyse de découverte

Pour surveiller les résultats d'une analyse de découverte, vous pouvez interroger les journaux créés lors de l'exécution d'une analyse.

Console

  1. Dans la console Google Cloud, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Dans la vue Explorateur de journaux, recherchez l'onglet Requête.

  3. Cliquez sur le menu Ressource.

  4. Sélectionnez Cloud Dataplex DataScan. Cliquez sur Apply (Appliquer).

  5. Cliquez sur le menu Nom du journal.

  6. Dans le champ Search log names (Rechercher des noms de journaux), saisissez dataplex.googleapis.com%2Fdata_scan. Sélectionnez data_scan, puis cliquez sur Appliquer.

  7. Facultatif: filtrez les journaux sur un ID ou un emplacement d'analyse de données spécifique en ajoutant les filtres suivants dans la requête de journal:

    resource.type="dataplex.googleapis.com/DataScan"
    AND resource.labels.resource_container="projects/PROJECT_ID"
    AND resource.labels.datascan_id="DATA_SCAN_ID"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_SCAN_ID: ID de DataScan
  8. Cliquez sur Exécuter la requête.

REST

Pour surveiller une analyse de découverte, utilisez la méthode dataScans.get.

Interroger des tables BigLake publiées

Une fois l'analyse de découverte exécutée, les tables BigLake sont publiées dans un nouvel ensemble de données dans BigQuery et sont disponibles pour l'analyse dans BigQuery à l'aide de SQL, ou dans Dataproc à l'aide d'Apache Spark ou de Dataproc ou HiveQL.

Interroger à l'aide de SQL

Vous pouvez afficher ou interroger des tables dans BigQuery. Pour en savoir plus sur l'exécution de requêtes dans BigQuery, consultez la page Exécuter une requête.

Requête utilisant Apache Spark

Pour interroger des tables BigLake à l'aide de Spark SQL dans une tâche sans serveur Dataproc, procédez comme suit:

  1. Créez un script PySpark semblable à l'exemple suivant:

      from pyspark.sql import SparkSession
      session = (
        SparkSession.builder.appName("testing")
          .config("viewsEnabled","true")
          .config("materializationDataset", "DATASET_ID")
          .config("spark.hive.metastore.bigquery.project.id", "PROJECT_ID")
          .config("spark.hive.metastore.client.factory.class", "com.google.cloud.bigquery.metastore.client.BigQueryMetastoreClientFactory")
          .enableHiveSupport()
          .getOrCreate()
      )
    
      session.sql("show databases").show()
      session.sql("use TABLE_NAME").show()
      session.sql("show tables").show()
    
      sql = "SELECT * FROM DATASET_ID.TABLE_ID LIMIT 10"
      df = session.read.format("bigquery").option("dataset", "DATASET_ID").load(sql)
      df.show()

    Remplacez les éléments suivants :

    • DATASET_ID: ID de l'ensemble de données pour lequel les utilisateurs sont autorisés à créer
    • PROJECT_ID: ID du projet avec la table BigLake
    • TABLE_NAME: nom de la table BigLake
    • TABLE_ID: ID de la table BigLake
  2. Envoyez la tâche par lot.

Gérer les tables BigLake publiées

Les tables BigLake publiées sont créées dans BigQuery par l'analyse de découverte. Sauf si le libellé metadata-managed-mode est défini sur user_managed, l'analyse de découverte gère les tables BigLake publiées. L'analyse de découverte gère la découverte de nouvelles données, les inférences de schéma et l'évolution du schéma chaque fois que les analyses de données planifiées ou à la demande sont exécutées.

Mettre à jour des tables BigLake publiées

Pour les tables BigLake publiées à l'aide des tâches d'analyse de découverte avec la configuration par défaut, le schéma et d'autres métadonnées sont automatiquement mis à jour à chaque exécution de la tâche d'analyse des données à la fréquence planifiée.

Pour mettre à jour une table BigLake publiée, procédez comme suit:

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

    Accéder à BigQuery

  2. Mettez à jour une ou plusieurs propriétés de la table.

  3. Dans le volet Explorer, développez votre projet et votre ensemble de données, puis sélectionnez la table.

  4. Dans le volet Détails, dans la section Libellés, assurez-vous que metadata-managed-mode est défini sur user_managed. Si elle est définie sur une autre valeur, procédez comme suit:

    1. Cliquez sur  Modifier les infos.

    2. À côté de la clé metadata-managed-mode, dans le champ value, saisissez user_managed.

Une table avec un schéma mis à jour devient disponible pour les requêtes SQL et Spark. Lorsque les prochaines analyses de découverte sont exécutées, les métadonnées de la table restent inchangées.

Supprimer des tables BigLake publiées

Pour supprimer une table BigLake publiée, procédez comme suit:

  1. Supprimez les fichiers de données de la table dans le bucket Cloud Storage.

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

    Accéder à BigQuery

  3. Dans le volet Explorer, développez votre projet et votre ensemble de données, puis sélectionnez la table.

  4. Dans le volet Details (Détails), dans la section Labels (Libellés), vérifiez que le libellé metadata-managed-mode n'est pas défini sur user_managed. Si elle est définie sur user_managed, procédez comme suit:

    1. Cliquez sur Modifier les détails .

    2. À côté de la clé metadata-managed-mode, dans le champ value, saisissez une valeur autre que user_managed.

  5. Cliquez sur Exécuter. L'analyse de découverte s'exécute à la demande.

Une fois l'analyse de découverte exécutée, la table BigLake est supprimée dans BigQuery et ne peut plus être listée ni interrogée via Spark.

Exécuter une analyse de découverte à la demande

Pour exécuter une analyse de découverte à la demande, utilisez la méthode dataScans.run dans l'API Dataplex.

Lister les analyses de découverte

Pour récupérer la liste des analyses de votre projet, utilisez la méthode dataScans.list dans l'API Dataplex.

Mettre à jour une analyse de découverte

Pour modifier la planification d'une analyse, par exemple en passant d'une analyse à la demande à une analyse récurrente, vous devez mettre à jour DataScan.

Pour mettre à jour une analyse de découverte, utilisez la méthode dataScans.patch dans l'API Dataplex.

Supprimer une analyse de découverte

Pour supprimer une analyse de découverte, utilisez la méthode dataScans.delete dans l'API Dataplex.