Importer des métadonnées dans un service

Une importation migre les métadonnées stockées dans un métastore Hive externe, sauvegardé par une base de données relationnelle, vers Dataproc Metastore. Les sources d'importation compatibles incluent les fichiers de vidage Avro et MySQL. Les importations basées sur Avro sont compatibles avec les versions Hive 2.3.6 et 3.1.2.

Cette page explique comment importer des métadonnées dans un service Dataproc Metastore existant. Notez que vous devez d'abord placer les données dans un bucket Cloud Storage, comme décrit dans les sections suivantes.

Avant de commencer

  • La plupart des commandes gcloud metastore nécessitent un emplacement. Vous pouvez le spécifier à l'aide de l'option --location ou en définissant l'emplacement par défaut.

    Pour de meilleurs résultats, utilisez des buckets Cloud Storage situés dans la même région que votre service Dataproc Metastore. Bien que Dataproc Metastore n'applique pas de restrictions de région, les ressources colocalisées sont plus performantes. Par exemple, un bucket multirégional de l'UE ne fonctionne pas correctement avec un service de région us-central1. L'accès interrégional entraîne une latence plus élevée, un manque d'isolation des défaillances régionales et des frais liés à la bande passante interrégionale.

Contrôle des accès

  • Pour importer des métadonnées, vous devez demander un rôle IAM contenant l'autorisation IAM metastore.imports.create. Les rôles spécifiques à Dataproc Metastore roles/metastore.admin et roles/metastore.editor incluent l'autorisation d'importation.

  • Les anciens rôles roles/owner et roles/editor permettent d'accorder une autorisation d'importation à des utilisateurs ou à des groupes.

  • L'agent de service Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) et l'utilisateur qui importe les métadonnées doivent disposer de l'autorisation de lecture suivante sur le bucket Cloud Storage utilisé pour l'importation:

    • Pour MySQL, ils doivent disposer de l'autorisation storage.objects.get sur l'objet Cloud Storage (fichier de vidage SQL) utilisé pour l'importation.

    • Pour Avro, ils doivent disposer de l'autorisation storage.objects.get sur le bucket Cloud Storage utilisé pour l'importation.

  • Si vous utilisez VPC Service Controls, vous ne pouvez importer que des données d'un bucket Cloud Storage résidant dans le même périmètre de service que le service Dataproc Metastore.

Pour en savoir plus, consultez la page IAM et contrôle des accès Dataproc Metastore.

Importer des métadonnées dans un service

Pour importer des métadonnées dans un service, saisissez des paramètres d'importation sur la page "Détails du service" ouverte dans un navigateur local, utilisez la CLI gcloud ou envoyez une méthode à l'API Dataproc Metastore services.metadataImports.create.

Lorsqu'une importation est en attente, aucune modification ne peut être apportée au service. Vous pouvez continuer à utiliser le service lorsqu'une importation est en cours.

Préparer l'importation

Avant de pouvoir importer des métadonnées stockées dans une base de données métastore Hive externe dans Dataproc Metastore, vous devez préparer l'importation en procédant comme suit :

  1. Créez des fichiers de vidage de base de données au format des fichiers Avro ou du fichier de vidage MySQL de votre base de données externe.

  2. Déplacez les fichiers vers Cloud Storage. Notez le chemin d'accès à Cloud Storage. Vous en aurez besoin pour effectuer l'importation.

    • Pour Avro, déplacez les fichiers dans un dossier Cloud Storage. Chaque table Hive doit contenir un fichier, même si celle-ci est vide. Les noms de fichiers doivent respecter le format <table-name>.avro, où <table-name> doit être en majuscules. Vous trouverez le <table-name> dans les fichiers de vidage SQL. Voici un exemple de nom de fichier, AUX_TABLE.avro.

    • Pour MySQL, déplacez le fichier dans un bucket Cloud Storage.

Dataproc Metastore effectue une validation de schéma de métadonnées Hive lorsque vous démarrez l'importation. Il vérifie les tables du fichier de vidage SQL et les noms des fichiers pour Avro. Si une table est manquante, l'importation échoue et affiche un message d'erreur décrivant la table manquante. Vous pouvez utiliser le kit Dataproc Metastore comme référence pour vérifier les schémas de métadonnées Hive appropriés.

Effectuer l'importation

Maintenant que vous avez préparé le fichier, vous pouvez l'importer dans un service Dataproc Metastore:

Console

  1. Dans Cloud Console, ouvrez la page Dataproc Metastore:

    Ouvrir Dataproc Metastore dans Cloud Console

  2. Sur la page Dataproc Metastore, cliquez sur le nom du service dans lequel vous souhaitez importer les métadonnées. La page Service detail (Informations sur le service) s'affiche.

    Page d&#39;informations sur le service
  3. En haut de la page, cliquez sur le bouton IMPORT (Importation). La boîte de dialogue Import s'ouvre.

  4. Saisissez le nom de l'importation dans Import name.

  5. Sélectionner la source

  6. Recherchez et sélectionnez l'URI Cloud Storage dans GCS URI. Il s'agit du chemin d'accès Cloud Storage au dossier Avro ou l'objet pour MySQL.

  7. (Facultatif) Saisissez une Description de l'importation. Vous pouvez modifier cette option ultérieurement sur la page Service detail (Informations sur le service).

  8. Cliquez sur le bouton Import (Importer) pour mettre à jour le service.

  9. Vérifiez que vous êtes revenu sur la page Informations sur le service et que votre importation apparaît sous Historique des importations dans l'onglet Importation/Exportation.

gcloud

  1. Exécutez la commande gcloud metastore services import gcs suivante pour mettre à jour un service:

    gcloud metastore services import gcs SERVICE \
        --import-id=IMPORT_ID \
        --location=LOCATION \
        --description=DESCRIPTION \
        --dump-type=DUMP_TYPE \
        --database-dump=DATABASE_DUMP
    

    Remplacez les éléments suivants :

    • SERVICE : nom du service.
    • IMPORT_ID: ID de l'importation des métadonnées.
    • LOCATION : fait référence à une région Google Cloud.
    • DESCRIPTION : (facultatif) description de l'importation. Vous pourrez modifier cette adresse ultérieurement en utilisant la commande gcloud metastore services imports update IMPORT.
    • DUMP_TYPE: type de la base de données externe. La valeur par défaut est mysql.
    • DATABASE_DUMP : chemin d'accès au dossier Cloud Storage pour Avro ou un objet pour MySQL contenant les fichiers de base de données. Il doit commencer par gs://.
  2. Vérifiez que l'importation a réussi.

REST

Suivez les instructions de l'API pour importer des métadonnées dans un service à l'aide de l'explorateur d'API.

Une fois l'importation réussie, le service passe automatiquement à l'état Actif. En cas d'échec, le service revient à son état opérationnel précédent.

Pour afficher l'historique des importations d'un service, reportez-vous à l'onglet Importations/Exportations de la page Détails du service dans Cloud Console.

Mises en garde concernant l'importation

  • L'importation met à jour les métadonnées complètes du service. Toutes les métadonnées existantes sont écrasées.

  • Vos fichiers de base de données doivent être des fichiers de vidage Avro ou MySQL. Si vous utilisez une autre méthode, telle que PostgreSQL, vous devez convertir le vidage en fichiers de vidage Avro ou MySQL. L'importation est compatible avec les vidages MySQL obtenus à partir d'un cluster Dataproc en langage SQL natif.

  • Les importations basées sur Avro sont compatibles avec les versions Hive 2.3.6 et 3.1.2.

  • Dataproc Metastore ne transforme pas le contenu de la base de données lors de l'importation et ne gère donc pas la migration des fichiers par la suite. Par conséquent, si vous déplacez vos données vers un autre emplacement, vous devez mettre à jour manuellement les emplacements et les schémas des données de la table dans Dataproc Metastore.

  • L'importation ne restaure ni ne remplace les règles IAM précises.

  • L'API vous permet de créer, de répertorier, de décrire et de mettre à jour des importations, mais vous ne pouvez pas les supprimer. Toutefois, la suppression du service entraîne la suppression de toutes les importations imbriquées sous ce service.

Échecs courants

  • Lorsque vous importez des métadonnées, les versions du métastore Hive et de Dataproc Metastore ne sont pas compatibles. Votre importation peut échouer si les deux ne correspondent pas. Pour plus d'informations, consultez les règles de versions.

  • Lors de la préparation de l'importation pour MySQL, il manque des tables Hive ou le schéma est incorrect. L'importation échoue s'il manque des tables ou si le schéma est incorrect.

  • Lors de la préparation de l'importation pour Avro, il manque des fichiers de table Hive. Il doit y avoir un fichier pour chaque table Hive, même si la table est vide, sinon l'importation échouera.

  • L'agent de service Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) ou l'utilisateur qui importe les métadonnées ne dispose pas des autorisations de lecture suivantes:

    • Pour MySQL, ils ne disposent pas de l'autorisation storage.objects.get sur l'objet Cloud Storage (fichier de vidage SQL) utilisé pour l'importation.

    • Pour Avro, ils ne disposent pas de l'autorisation storage.objects.get sur le bucket Cloud Storage utilisé pour l'importation.

  • Votre fichier de base de données est trop volumineux et l'exécution du processus d'importation prend plus d'une heure.

Étapes suivantes