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 de 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 spécifier l'emplacement à l'aide de l'option --location ou en définissant l'emplacement par défaut.

    Pour de meilleurs résultats, utilisez les 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 régionales, les ressources colocalisées et globales sont plus performantes. Par exemple, un bucket global convient à toutes les régions de service, mais un bucket multirégional de l'UE ne fonctionne pas bien avec un service 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 de bande passante réseau interrégionale.

Contrôle des accès

  • Pour importer des métadonnées, vous devez disposer d'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.

  • Vous pouvez accorder une autorisation d'importation aux utilisateurs ou aux groupes à l'aide des anciens rôles roles/owner et roles/editor.

  • 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 "Informations sur le service" ouverte dans un navigateur local, utilisez l'outil gcloud ou émettez une méthode d'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 de fichiers Avro ou de fichier de vidage MySQL de votre base de données externe.

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

    • Pour Avro, déplacez les fichiers dans un dossier Cloud Storage. Chaque table Hive doit contenir un fichier, même si elle est vide. Les noms des fichiers doivent être au format <table-name>.avro, où <table-name> doit être en majuscules. Le fichier <table-name> se trouve 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 du schéma de métadonnées Hive lorsque vous démarrez l'importation. Elle vérifie les tables du fichier de vidage SQL et les noms de fichier d'Avro. S'il manque une table, l'importation échoue et un message d'erreur décrit la table manquante. Le kit Dataproc Metastore peut vous servir de référence pour vérifier les schémas de métadonnées Hive appropriés.

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électionnez la source.

  6. Recherchez et sélectionnez l'URI Cloud Storage dans GCS URI. Il s'agit du chemin d'accès Cloud Storage vers le bucket des données d'importation.

  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 de 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 bucket Cloud Storage contenant les fichiers de la 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 d'importation d'un service, reportez-vous à l'onglet Importation/Exportation sur la page Informations sur le service de Cloud Console.

Mises en garde concernant l'importation

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

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

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

  • Dataproc Metastore ne transforme pas le contenu de la base de données lors de l'importation et ne gère pas la migration des fichiers. 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'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. Cependant, la suppression du service lui-même supprime 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. Chaque table Hive doit contenir un fichier, même si elle 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 de l'autorisation de lecture suivante:

    • 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.

  • Le fichier de votre base de données est trop volumineux et prend plus d'une heure pour terminer le processus d'importation.

Étape suivante