Mettre à niveau des tables et des vues vers Unity Catalog

Cet article explique comment mettre à niveau les tables et les vues inscrites dans votre metastore Hive existant vers Unity Catalog.

Important

Comme solution de remplacement aux procédures manuelles décrites dans cet article, Databricks Labs fournit également le projet UCX, un ensemble de workflows et d’utilitaires que vous pouvez utiliser pour planifier et exécuter la mise à niveau de tables dans un metastore Hive vers des tables dans le metastore Unity Catalog. UCX vous permet également de mettre à niveau des groupes d’espaces de travail vers des groupes au niveau du compte et de migrer des informations d’identification pour accéder à des emplacements de stockage. Pour obtenir plus d’informations, consultez Utiliser les utilitaires UCX pour mettre à niveau votre espace de travail vers Unity Catalog.

Pour déterminer si une table est actuellement inscrite dans Unity Catalog, vérifiez le nom du catalogue. Les tables du catalogue hive_metastore sont inscrites dans le metastore Hive. Tous les autres catalogues répertoriés sont régis par Unity Catalog.

Notes

Unity Catalog gère les partitions différemment de Hive. Les commandes Hive qui manipulent directement les partitions ne sont pas prises en charge sur les tables gérées par Unity Catalog.

Procéder à la mise à niveau vers Unity Catalog d’un schéma ou de plusieurs tables

Vous pouvez copier des schémas complets (bases de données) et plusieurs tables externes depuis votre metastore Hive par défaut vers le metastore Unity Catalog à l’aide de l’Assistant Mise à niveau de Catalog Explorer.

Spécifications

Avant de commencer, vous devez disposer des éléments suivants :

  • Des informations d’identification de stockage contenant les informations relatives à un principal de service autorisé à accéder à l’emplacement de la table.
  • Un emplacement externe qui référence les informations d’identification de stockage que vous venez de créer et le chemin des données sur votre locataire cloud.
  • Autorisation CREATE EXTERNAL TABLE sur les emplacements externes des tables à mettre à niveau.

Mise à niveau

  1. Cliquez sur icône CatalogueCatalogue dans la barre latérale pour ouvrir Catalog Explorer.

  2. Choisissez hive_metastore comme catalogue et sélectionnez le schéma (la base de données) que vous souhaitez mettre à niveau.

    Sélectionner la base de données

  3. Cliquez sur Mettre à niveau en haut à droite de la vue détaillée du schéma.

  4. Sélectionnez toutes les tables que vous souhaitez mettre à niveau, puis cliquez sur Suivant.

    Seules les tables externes aux formats pris en charge par Unity Catalog peuvent être mises à niveau à l’aide de l’Assistant Mise à niveau.

  5. Définissez le catalogue de destination, le schéma (base de données) et le propriétaire de chaque table.

    Les utilisateurs pourront accéder à la table nouvellement créée dans la limite de leurs privilèges sur le catalogue et le schéma.

    Le propriétaire d’une table dispose de tous les privilèges sur celle-ci, y compris SELECT et MODIFY. Si vous ne sélectionnez pas de propriétaire lors de la création des tables managées, alors vous êtes identifié comme propriétaire. De manière générale, Databricks recommande d’octroyer la propriété de la table aux groupes. Pour en savoir plus sur la propriété des objets dans Unity Catalog, consultez Gérer la propriété de l’objet Unity Catalog.

    Pour attribuer le même catalogue et le même schéma à plusieurs tables, sélectionnez les tables, puis cliquez sur le bouton Définir la destination.

    Pour attribuer le même propriétaire à plusieurs tables, sélectionnez les tables, puis cliquez sur le bouton Définir le propriétaire.

  6. Passez en revue les configurations des tables. Pour les modifier, cliquez sur le bouton Précédent.

  7. Cliquez sur Créer une requête pour la mise à niveau.

    Un éditeur de requête s’affiche, avec des instructions SQL générées.

  8. Exécute la requête.

    L’exécution de la requête permet de copier les métadonnées de chaque table du metastore Hive vers Unity Catalog. Au terme de l’opération, ces tables sont marquées comme mises à niveau dans l’Assistant Mise à niveau.

  9. Définissez un contrôle d’accès précis à l’aide de l’onglet Autorisations de chaque nouvelle table.

  10. Modifiez vos charges de travail pour utiliser la nouvelle table.

Mettre à niveau une seule table externe vers Unity Catalog

Vous pouvez copier une table externe à depuis votre metastore Hive par défaut vers le metastore Unity Catalog à l’aide de Catalog Explorer.

Spécifications

Avant de commencer, vous devez disposer des éléments suivants :

  • Les informations d’identification de stockage relatives à un principal de service ou à une identité managée ayant l’autorisation d’accéder à l’emplacement de la table.
  • Un emplacement externe qui référence les informations d’identification de stockage que vous venez de créer et le chemin des données sur votre locataire cloud.
  • Autorisation CREATE EXTERNAL TABLE sur l’emplacement externe de la table à mettre à niveau.

Mise à niveau

Pour procéder à la mise à niveau d’une table externe :

  1. Cliquez sur icône CatalogueCatalogue dans la barre latérale pour ouvrir Catalog Explorer.

  2. Sélectionnez la base de données, puis la table, que vous souhaitez améliorer.

  3. Cliquez sur Action de mise à niveau dans le coin supérieur droit de l’affichage des détails du tableau.

  4. Sélectionnez votre catalogue de destination, votre schéma (base de données) et votre propriétaire.

    Les utilisateurs pourront accéder à la table nouvellement créée dans la limite de leurs privilèges sur le catalogue et le schéma.

    Le propriétaire d’une table dispose de tous les privilèges sur celle-ci, y compris SELECT et MODIFY. Si vous ne sélectionnez pas de propriétaire lors de la création d’une table managée, alors vous êtes identifié comme propriétaire. De manière générale, Databricks recommande d’octroyer la propriété de la table aux groupes. Pour en savoir plus sur la propriété des objets dans Unity Catalog, consultez Gérer la propriété de l’objet Unity Catalog.

  5. Cliquez sur Mettre à niveau.

    Les métadonnées de table sont désormais copiées dans Unity Catalog et une nouvelle table a été créée. Vous pouvez maintenant affiner le contrôle des accès sous l’onglet Autorisations.

  6. Modifiez les charges de travail existantes pour utiliser la nouvelle table.

    Notes

    Si vous n’avez plus besoin de l’ancienne table, vous pouvez la supprimer à partir du metastore Hive. L’abandon d’une table externe ne modifie pas les fichiers de données sur votre locataire cloud.

Mettre à niveau une vue vers Unity Catalog

Après la mise à niveau de toutes les tables référencées d’une vue vers le même metastore Unity Catalog, vous pouvez créer une nouvelle vue qui référence les nouvelles tables.

Mettre à niveau une table vers une table managée Unity Catalog

Pour procéder à la mise à niveau d’une table vers Unity Catalog en tant que table managée :

  1. Créez une table Unity Catalog en interrogeant la table existante. Remplacez les valeurs d’espace réservé :

    • <catalog> : catalogue Unity Catalog pour la nouvelle table.
    • <new-schema> : schéma Unity Catalog pour la nouvelle table.
    • <new-table> : nom de la table Unity Catalog.
    • <old-schema> : schéma de l’ancienne table, tel que default.
    • <old-table> : nom de l’ancienne table.

    SQL

    CREATE TABLE <catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<old-schema>.<old-table>;
    

    Python

    df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      name = "<catalog>.<new-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<old-schema>.<old-table>")
    
    saveAsTable(
      df = df,
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    Si vous souhaitez migrer uniquement certaines colonnes ou lignes, modifiez l'instruction SELECT.

    Notes

    Cette commande crée une table managée dans laquelle les données sont copiées à l’emplacement de stockage qui a été désigné lors de la configuration du metastore. Pour créer une table externe, où une table est inscrite dans Unity Catalog sans déplacer les données dans le stockage cloud, consultez Mettre à niveau une seule table externe vers Unity Catalog.

  2. Accordez l’accès à la nouvelle table aux utilisateurs ou aux groupes au niveau du compte. Consultez Gérer les privilèges dans Unity Catalog.

  3. Une fois la table migrée, les utilisateurs doivent mettre à jour leurs requêtes et charges de travail existantes pour qu’elles utilisent la nouvelle table.

  4. Avant de supprimer l’ancienne table, testez les dépendances en révoquant l’accès à celle-ci et en réexécutant les requêtes et les charges de travail associées.