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 limitations régionales, les ressources hébergées en colocation et les ressources globales fonctionnent mieux. Par exemple, un bucket mondial est adapté à toute région de service, mais un bucket multirégional de l'UE ne fonctionne pas correctement avec un service us-central1. L'accès interrégional entraîne une latence plus élevée, un manque d'isolation des pannes régionales et des frais liés à la bande passante réseau 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 les paramètres d'importation sur la page "Informations sur le service" ouverte dans un navigateur local, utilisez l'outil gcloud ou exécutez une méthode 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 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 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 bucket Cloud Storage 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 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. 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'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.

Étape suivante