Partager via


Mettre à niveau des tables et des vues Hive vers Unity Catalog

Cet article explique comment mettre à niveau les tables et les vues inscrites dans votre metastore Hive hérité d’un espace de travail vers Unity Catalog. Vous pouvez mettre à niveau une table Hive vers une table managée ou une table externe dans Unity Catalog.

  • Les tables managées constituent l’option de prédilection pour créer des tables dans Unity Catalog. Unity Catalog gère entièrement leur cycle de vie, la disposition de leurs fichiers et leur stockage. Unity Catalog optimise aussi leurs performances automatiquement. Les tables managées utilisent toujours le format de table Delta.

    Les tables managées résident dans un emplacement de stockage managé que vous réservez à Unity Catalog. En raison de cette exigence de stockage, vous devez utiliser CLONE ou CREATE TABLE AS SELECT (CTAS) si vous souhaitez copier des tables Hive existantes dans Unity Catalog en tant que tables managées.

  • Les tables externes sont des tables dont le cycle de vie des données, la disposition des fichiers et l’emplacement de stockage ne sont pas gérés par Unity Catalog. Plusieurs formats de données sont pris en charge pour les tables externes.

    En règle générale, vous utilisez des tables externes seulement si vous avez aussi besoin d’un accès direct aux données en utilisant un calcul non-Databricks (autrement dit, sans utiliser de clusters Databricks ni d’entrepôts SQL Databricks). Les tables externes sont également pratiques dans les scénarios de migration, car vous pouvez inscrire rapidement des données existantes dans Unity Catalog sans avoir à les copier. Cela est dû au fait que les données des tables externes n’ont pas besoin de résider dans un stockage managé réservé.

Pour plus d’informations sur les tables managées et externes dans le catalogue Unity, consultez Qu’est-ce que les tables et les vues ?.

Options de migration de Hive vers Unity Catalog

Lorsque vous êtes prêt à migrer des tables Hive vers Unity Catalog, vous disposez de plusieurs options selon votre cas d’usage :

Outil de migration Description Tables Hive requises Table Unity Catalog créée Pourquoi l’utiliser ?
UCX Ensemble complet d’utilitaires en ligne de commande et d’autres outils qui évaluent la préparation de votre espace de travail à la migration vers Unity Catalog et effectuent des workflows qui migrent des identités, des autorisations, des emplacements de stockage et des tables vers Unity Catalog. UCX est disponible sur GitHub sur databrickslabs/ucx. Tables Hive gérées ou externes Gérée ou externe Vous voulez un outil complet de planification de mise à niveau d’espace de travail qui va au-delà de la mise à niveau des tables Hive vers Unity Catalog. Vous voulez mettre à niveau des espaces de travail qui ont de grandes quantités de données dans le metastore Hive. Vous exécutez des scripts sans problème. Si vous souhaitez effectuer une mise à niveau en bloc des tables Hive vers des tables managées Unity Catalog, il s’agit de votre seule option. UCX, comme tous les projets Databricks Labs, est un dépôt GitHub public qui n’est pas pris en charge directement par Databricks.
Assistant de mise à niveau Unity Catalog Fonctionnalité de l’Explorateur de catalogues qui vous permet de copier en bloc des schémas entiers (bases de données) et plusieurs tables managées et externes de votre metastore Hive vers le metastore Unity Catalog en tant que tables externes. L’Assistant de mise à niveau exécute la commande SYNC sur les tables que vous sélectionnez, en laissant les tables Hive d’origine intactes. Vous avez la possibilité de planifier des mises à niveau récurrentes afin de récupérer les modifications apportées aux tables Hive sources. Tables Hive gérées ou externes Externe uniquement Vous voulez mettre à niveau rapidement vos tables Hive vers des tables externes dans Unity Catalog et vous préférez une interface visuelle. Sa capacité à planifier des synchronisations récurrentes lorsque la table Hive source change en fait un outil utile pour gérer un espace de travail Hive et Unity Catalog « hybride » pendant la transition vers Unity Catalog.
Commande SQL SYNC SYNC vous permet de copier des tables externes et des tables managées (si les tables managées sont stockées en dehors du stockage de l’espace de travail Databricks, parfois appelée racine DBFS) de votre metastore Hive vers des tables externes dans Unity Catalog. Vous pouvez synchroniser des tables individuelles ou des schémas entiers.

La commande SYNC est conçue pour être exécutée selon une planification afin de récupérer les nouvelles modifications dans le metastore Hive et de les synchroniser avec Unity Catalog.
Tables Hive gérées ou externes Externe uniquement Vous voulez mettre à niveau rapidement vos tables Hive vers des tables externes dans Unity Catalog et vous préférez utiliser des commandes SQL plutôt qu’une interface visuelle.

La planification d’exécutions récurrentes de SYNC pour mettre à jour des tables Unity Catalog existantes lorsque la table Hive source change en fait un outil utile pour gérer un espace de travail Hive et Unity Catalog « hybride » pendant la transition vers Unity Catalog.

Étant donné que vous ne pouvez pas utiliser SYNC pour mettre à niveau des tables managées qui se trouvent dans le stockage de l’espace de travail Databricks, utilisez CREATE TABLE CLONE pour ces tables.
Commande SQL CREATE TABLE CLONE CREATE TABLE CLONE vous permet de mettre à niveau les tables managées de votre metastore Hive vers des tables managées dans Unity Catalog. Vous pouvez cloner des tables individuelles.

Les clones profonds copient les données et métadonnées de la table source vers la cible clone.
Tables Hive gérées qui sont au format Delta. Managée uniquement Vous voulez migrer des tables managées Hive vers des tables managées Unity Catalog pour tirer pleinement parti de la gouvernance des données Unity Catalog, et vos tables Hive répondent aux critères répertoriés dans la cellule « Tables Hive requises ».

Si vos tables Hive ne correspondent pas aux « Tables Hive requises », vous pouvez utiliser la commande SQL CREATE TABLE AS SELECT pour mettre à niveau une table Hive vers une table managée Unity Catalog. Toutefois, CLONE est presque toujours la commande choisie. Le clonage a une syntaxe plus simple que CREATE TABLE AS SELECT : vous n’avez pas besoin de spécifier le partitionnement, le format, les invariants, la nullabilité, le flux, COPY INTO et autres métadonnées, car tout est cloné depuis la table source.

Cet article explique comment tout faire, sauf le processus de mise à niveau piloté par UCX. Databricks recommande UCX pour la plupart des scénarios de mise à niveau d’espace de travail. Toutefois, pour des cas d’usage plus simples, vous préférerez probablement un ou plusieurs des outils décrits ici.

Avant de commencer

Cette section décrit quelques impacts de la migration auxquels vous devez vous préparer, ainsi que les autorisations et les calculs requis.

Comprendre l’impact

Vous devez savoir que lorsque vous modifiez vos charges de travail pour utiliser les nouvelles tables Unity Catalog, vous risquez de devoir changer certains comportements :

  • 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.
  • L’historique des tables n’est pas migré lorsque vous exécutez CREATE TABLE CLONE. Toutes les tables du metastore Hive que vous clonez dans Unity Catalog sont traitées comme de nouvelles tables. Vous ne pouvez pas faire de voyage dans le temps Delta Lake, ni aucune autre opération qui s’appuie sur l’historique pré-migration.

Pour plus d’informations, consultez Utiliser Unity Catalog et le metastore Hive hérité.

Spécifications

Pour effectuer des migrations, vous devez avoir :

  • Un espace de travail avec un metastore Unity Catalog et au moins un catalogue Unity Catalog. Consultez Configurer et gérer Unity Catalog.

  • Des privilèges sur les catalogues Unity Catalog vers lesquels vous migrez des tables. Ces privilèges requis sont énumérés au début de chaque procédure décrite dans cet article.

  • Pour la migration vers des tables externes Unity Catalog : des informations d’identification de stockage et des emplacements externes définis dans Unity Catalog, ainsi que le privilège CREATE EXTERNAL TABLE sur l’emplacement externe.

  • Un accès au calcul Azure Databricks qui répond aux deux conditions suivantes :

    • Prend en charge le catalogue Unity (entrepôts SQL ou ressources de calcul qui utilisent un seul utilisateur ou le mode d’accès partagé).
    • Autorise l’accès aux tables du metastore Hive.

    Étant donné que les ressources de calcul qui utilisent le mode d’accès partagé sont activées pour le contrôle d’accès aux tables héritées par défaut, cela signifie que si vous utilisez ce mode d’accès, vous devez disposer de privilèges de contrôle d’accès aux tables sur le metastore Hive à partir duquel vous effectuez la migration. Vous pouvez vous accorder l’accès à l’aide de la commande SQL suivante :

    GRANT ALL PRIVILEGES ON catalog hive_metastore TO `<user>`
    

    Vous pouvez également utiliser une ressource de calcul en mode d’accès utilisateur unique.

Pour plus d’informations sur la gestion des privilèges sur les objets dans le metastore Hive, consultez Privilèges et objets sécurisables dans le metastore Hive (hérité). Pour plus d’informations sur la gestion des privilèges sur les objets dans Unity Catalog, consultez Gérer les privilèges dans Unity Catalog.

Identifier les tables qui sont managées par le metastore Hive

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 hérité de l’espace de travail. Tous les autres catalogues répertoriés sont régis par Unity Catalog.

Pour afficher les tables du catalogue hive_metastore à l’aide de l’Explorateur de catalogues :

  1. Cliquez dans la barre latérale sur icône Catalogue Catalog.
  2. Dans le volet des catalogues, accédez au catalogue hive_metastore et développez les nœuds de schéma.

Vous pouvez également rechercher une table spécifique à l’aide du champ de filtre dans le volet Catalogue.

Mettre à niveau un schéma ou plusieurs tables du metastore Hive vers des tables externes Unity Catalog en utilisant l’Assistant de mise à niveau

Vous pouvez copier des schémas complets (bases de données) et plusieurs tables externes ou managées depuis votre metastore Hive Azure Databricks par défaut vers le metastore Unity Catalog à l’aide de l’Assistant de mise à niveau de l’Explorateur de catalogues. Les tables mises à niveau seront des tables externes dans Unity Catalog.

Pour savoir quand utiliser l’Assistant de mise à niveau, consultez Options de migration de Hive vers Unity Catalog.

Spécifications

Formats de données requis :

Exigences de calcul :

Autorisations et objets requis dans Unity Catalog :

  • Des informations d’identification de stockage pour une identité managée Azure ou un principal de service qui autorise Unity Catalog à accéder au chemin d’emplacement des tables.
  • 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.

Conditions d’accès aux tables Hive :

  • Si votre calcul utilise le mode d’accès partagé, vous devez avoir un accès aux tables du metastore Hive, accordé à l’aide du contrôle d’accès aux tables héritées. Voir Avant de commencer.

Mise à niveau

  1. Cliquez dans la barre latérale sur icône Catalogue Catalogue pour ouvrir l’Explorateur de catalogues.

  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. Consultez Utiliser des tables externes.

  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. (Facultatif) Ajoutez des commentaires à chaque table Hive mise à niveau qui pointe les utilisateurs vers la nouvelle table Unity Catalog.

    Revenez à la table d’origine dans le catalogue hive.metastore pour ajouter le commentaire de table.

    Si vous utilisez la syntaxe suivante dans le commentaire de table, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consultez Ajouter des commentaires pour indiquer qu’une table Hive a été migrée.

  11. Modifiez vos charges de travail pour utiliser les nouvelles tables.

    Si vous avez ajouté un commentaire à la table Hive d’origine comme celle répertoriée à l’étape facultative précédente, vous pouvez utiliser le lien Correctif rapide et l’Assistant Databricks pour vous aider à trouver et modifier des charges de travail.

Mettre à niveau une seule table Hive vers une table externe Unity Catalog à l’aide de l’Assistant de mise à niveau

Vous pouvez copier une seule table de votre metastore Hive par défaut dans le metastore Unity Catalog à l’aide de l’Assistant de mise à niveau dans l’Explorateur de catalogues.

Pour savoir quand utiliser l’Assistant de mise à niveau, consultez Options de migration de Hive vers Unity Catalog.

Spécifications

Formats de données requis :

Exigences de calcul :

Autorisations et objets requis dans Unity Catalog :

  • Des informations d’identification de stockage pour une identité managée Azure ou un principal de service qui autorise Unity Catalog à accéder au chemin d’emplacement des tables.
  • 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

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

  1. Cliquez dans la barre latérale sur icône Catalogue Catalogue pour ouvrir l’Explorateur de catalogues.

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

  3. Cliquez sur Mettre à niveau en haut à droite de la vue des détails de la table.

  4. Sélectionnez la table à mettre à niveau et cliquez sur Suivant.

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

  6. Cliquez sur Mettre à niveau en haut à droite de la vue des détails de la table.

  7. Sélectionnez la table à mettre à niveau et cliquez sur Suivant.

    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.

  8. Définissez un contrôle d’accès précis sous l’onglet Autorisations.

  9. (Facultatif) Ajoutez un commentaire à la table Hive qui pointe les utilisateurs vers la nouvelle table Unity Catalog.

    Revenez à la table d’origine dans le catalogue hive.metastore pour ajouter le commentaire de table.

    Si vous utilisez la syntaxe suivante dans le commentaire de table, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consultez Ajouter des commentaires pour indiquer qu’une table Hive a été migrée.

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

    Si vous avez ajouté un commentaire à la table Hive d’origine comme celle répertoriée à l’étape facultative précédente, vous pouvez utiliser le lien Correctif rapide et l’Assistant Databricks pour vous aider à trouver et modifier des charges de travail.

    Remarque

    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 table Hive vers une table externe Unity Catalog à l’aide de SYNC

Vous pouvez utiliser la commande SQL SYNC pour copier des tables externes de votre metastore Hive vers des tables externes dans Unity Catalog. Vous pouvez synchroniser des tables individuelles ou des schémas entiers.

Vous pouvez également utiliser SYNC pour copier des tables managées Hive stockées en dehors du stockage des espaces de travail Databricks (parfois appelé racine DBFS) vers des tables externes dans Unity Catalog. Vous ne pouvez pas l’utiliser pour copier des tables managées Hive stockées dans un espace de travail. Pour copier ces tables, utilisez plutôt CREATE TABLE CLONE.

La commande SYNC effectue une opération d’écriture sur chaque table source qu’elle met à niveau pour ajouter des propriétés de table supplémentaires à des fins de comptabilité, notamment un enregistrement de la table externe Unity Catalog cible.

La commande SYNC peut également être utilisée pour mettre à jour les tables Unity Catalog existantes lorsque les tables sources du metastore Hive sont modifiées. C’est donc un bon outil pour passer progressivement à Unity Catalog.

Pour plus d’informations, consultez SYNC. Pour savoir quand utiliser l’Assistant de mise à niveau, consultez Options de migration de Hive vers Unity Catalog.

Spécifications

Formats de données requis :

Exigences de calcul :

Autorisations et objets requis dans Unity Catalog :

  • Des informations d’identification de stockage pour une identité managée Azure ou un principal de service qui autorise Unity Catalog à accéder au chemin d’emplacement des tables.
  • 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.

Conditions d’accès aux tables Hive :

  • Si votre calcul utilise le mode d’accès partagé, vous devez avoir un accès aux tables du metastore Hive, accordé à l’aide du contrôle d’accès aux tables héritées. Voir Avant de commencer.

Mise à niveau

Pour mettre à niveau des tables de votre metastore Hive vers des tables externes Unity Catalog à l’aide de SYNC :

  1. Dans un notebook ou dans l’éditeur de requête SQL, exécutez ce qui suit :

    Synchronisez une table Hive externe :

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    Synchronisez un schéma Hive externe et toutes ses tables :

    SYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    

    Synchronisez une table Hive managée stockée en dehors du stockage des espaces de travail Databricks :

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    Synchronisez un schéma qui contient des tables Hive managées stockées en dehors du stockage des espaces de travail Databricks :

    SYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    
  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. (Facultatif) Ajoutez un commentaire à la table Hive d’origine qui pointe les utilisateurs vers la nouvelle table Unity Catalog.

    Revenez à la table d’origine dans le catalogue hive.metastore pour ajouter le commentaire de table. Pour découvrir comment ajouter des commentaires de table à l’aide de l’Explorateur de catalogues, consultez Ajouter des commentaires aux ressources de données et d’IA. Pour savoir comment ajouter des commentaires de table à l’aide d’instructions SQL dans un notebook ou dans l’éditeur de requête SQL, consultez COMMENT ON.

    Si vous utilisez la syntaxe suivante dans le commentaire de table, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consultez Ajouter des commentaires pour indiquer qu’une table Hive a été migrée.

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

    Si vous avez ajouté un commentaire à la table Hive d’origine comme celle répertoriée à l’étape facultative précédente, vous pouvez utiliser le lien Correctif rapide et l’Assistant Databricks pour vous aider à trouver et modifier des charges de travail.

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

    Ne supprimez pas l’ancienne table si vous continuez à vous servir des commentaires de dépréciation pour vous aider à trouver et à mettre à jour le code existant qui fait référence à l’ancienne table. Ne supprimez pas non plus l’ancienne table si celle-ci a changé depuis votre synchronisation d’origine : SYNC peut être utilisé pour mettre à jour les tables Unity Catalog existantes avec les modifications des tables Hive sources.

Mettre à niveau une table managée Hive vers une table managée Unity Catalog à l’aide de CLONE

Utilisez CREATE TABLE CLONE pour mettre à niveau les tables Delta managées de votre metastore Hive vers des tables managées dans Unity Catalog. Vous pouvez cloner des tables individuelles. Vous devez utiliser des clones profonds lorsque vous clonez des tables du metastore Hive hérité vers le Unity Catalog.

Pour savoir quand utiliser CLONE, consultez Options de migration de Hive vers Unity Catalog. Pour plus d’informations sur CLONE, consultez Cloner une table sur Azure Databricks.

Spécifications

Formats de données requis :

  • Tables Hive gérées au format Delta.

Exigences de calcul :

Spécifications relatives aux autorisations :

  • Les privilèges USE CATALOG et USE SCHEMA sur le catalogue et le schéma auxquels vous ajoutez la table, ainsi que CREATE TABLE sur le schéma, ou vous devez être propriétaire du catalogue ou du schéma. Consultez Privilèges Unity Catalog et objets sécurisables.
  • Si votre calcul utilise le mode d’accès partagé, vous devez avoir un accès aux tables du metastore Hive, accordé à l’aide du contrôle d’accès aux tables héritées. Voir Avant de commencer.

Mise à niveau

Pour mettre à niveau les tables managées de votre metastore Hive vers des tables managées dans Unity Catalog :

  1. Dans un notebook ou dans l’éditeur de requête SQL, exécutez ce qui suit :

    Créez un clone profond d’une table managée du metastore Hive :

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    DEEP CLONE hive_metastore.<source-schema>.<source-table>;
    

    Pour plus d’informations sur les paramètres supplémentaires, y compris les propriétés de table, consultez CREATE TABLE CLONE.

  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. (Facultatif) Ajoutez un commentaire à la table Hive d’origine qui pointe les utilisateurs vers la nouvelle table Unity Catalog.

    Revenez à la table d’origine dans le catalogue hive.metastore pour ajouter le commentaire de table. Pour découvrir comment ajouter des commentaires de table à l’aide de l’Explorateur de catalogues, consultez Ajouter des commentaires aux ressources de données et d’IA. Pour savoir comment ajouter des commentaires de table à l’aide d’instructions SQL dans un notebook ou dans l’éditeur de requête SQL, consultez COMMENT ON.

    Si vous utilisez la syntaxe suivante dans le commentaire de table, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consultez Ajouter des commentaires pour indiquer qu’une table Hive a été migrée.

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

    Si vous avez ajouté un commentaire à la table Hive d’origine comme celle répertoriée à l’étape facultative précédente, vous pouvez utiliser le lien Correctif rapide et l’Assistant Databricks pour vous aider à trouver et modifier des charges de travail.

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

    Ne supprimez pas l’ancienne table si vous continuez à vous servir des commentaires de dépréciation pour vous aider à trouver et à mettre à jour le code existant qui fait référence à l’ancienne table. Ne supprimez pas non plus l’ancienne table si vous avez créé un clone superficiel. Les clones superficiels font référence aux données de la table Hive source.

Mettre à niveau une table Hive vers une table managée Unity Catalog à l’aide de CREATE TABLE AS SELECT

Si vous ne pouvez pas utiliser ou préférez ne pas utiliser CREATE TABLE CLONE pour migrer une table de votre metastore Hive vers une table managée dans Unity Catalog, vous pouvez créer une nouvelle table managée dans Unity Catalog en interrogeant la table Hive à l’aide de CREATE TABLE AS SELECT. Pour plus d’informations sur les différences entre CREATE TABLE CLONE et CREATE TABLE AS SELECT, consultez Options de migration de Hive vers Unity Catalog.

Spécifications

Exigences de calcul :

Spécifications relatives aux autorisations :

  • Les privilèges USE CATALOG et USE SCHEMA sur le catalogue et le schéma auxquels vous ajoutez la table, ainsi que CREATE TABLE sur le schéma, ou vous devez être propriétaire du catalogue ou du schéma. Consultez Privilèges Unity Catalog et objets sécurisables.
  • Si votre calcul utilise le mode d’accès partagé, vous devez avoir un accès aux tables du metastore Hive, accordé à l’aide du contrôle d’accès aux tables héritées. Voir Avant de commencer.

Mise à niveau

Pour mettre à niveau une table de votre metastore Hive vers une table managée dans Unity Catalog à l’aide de CREATE TABLE AS SELECT :

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

    • <uc-catalog> : catalogue Unity Catalog pour la nouvelle table.
    • <uc-schema> : schéma Unity Catalog pour la nouvelle table.
    • <new-table> : nom de la table Unity Catalog.
    • <source-schema> : schéma de la table Hive, tel que default.
    • <source-table> : nom de la table Hive.

    SQL

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

    Python

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

    R

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

    Scala

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

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

    Remarque

    Les commandes présentées ici créent une table managée dans laquelle les données sont copiées dans un emplacement de stockage managé dédié. Si vous voulez plutôt créer une table externe, où la table est inscrite dans Unity Catalog sans déplacer les données dans le stockage cloud, consultez Mettre à niveau une seule table Hive vers une table externe Unity Catalog à l’aide de l’Assistant de mise à niveau. Consultez également Spécifier un emplacement de stockage managé dans 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. (Facultatif) Ajoutez un commentaire à la table Hive d’origine qui pointe les utilisateurs vers la nouvelle table Unity Catalog.

    Revenez à la table d’origine dans le catalogue hive.metastore pour ajouter le commentaire de table. Pour découvrir comment ajouter des commentaires de table à l’aide de l’Explorateur de catalogues, consultez Ajouter des commentaires aux ressources de données et d’IA. Pour savoir comment ajouter des commentaires de table à l’aide d’instructions SQL dans un notebook ou dans l’éditeur de requête SQL, consultez COMMENT ON.

    Si vous utilisez la syntaxe suivante dans le commentaire de table, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consultez Ajouter des commentaires pour indiquer qu’une table Hive a été migrée.

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

    Si vous avez ajouté un commentaire à la table Hive d’origine comme celle répertoriée à l’étape facultative précédente, vous pouvez utiliser le lien Correctif rapide et l’Assistant Databricks pour vous aider à trouver et modifier des charges de travail.

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

    Ne supprimez pas l’ancienne table si vous continuez à vous servir des commentaires de dépréciation pour vous aider à trouver et à mettre à jour le code existant qui fait référence à l’ancienne table.

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.

Ajouter des commentaires pour indiquer qu’une table Hive a été migrée

Quand vous ajoutez un commentaire à la table Hive dépréciée qui pointe les utilisateurs vers la nouvelle table Unity Catalog, les notebooks et les requêtes de l’éditeur de requête SQL qui font référence à la table Hive dépréciée affichent le nom de la table dépréciée en utilisant du texte barré, affichent le commentaire en tant qu’avertissement et fournissent un lien Correctif rapide vers l’Assistant Databricks, qui peut mettre à jour votre code pour faire référence à la nouvelle table.

Avertissement de dépréciation d’une table Hive

Votre commentaire doit utiliser le format suivant :

This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.

Pour découvrir comment ajouter des commentaires de table à l’aide de l’Explorateur de catalogues, consultez Ajouter des commentaires aux ressources de données et d’IA. Pour savoir comment ajouter des commentaires de table à l’aide d’instructions SQL dans un notebook ou dans l’éditeur de requête SQL, consultez COMMENT ON.

Utiliser l’Assistant Databricks pour mettre à jour une référence de table dépréciée

Si vous voyez du texte barré sur un nom de table dans une cellule ou une instruction de notebook dans l’éditeur de requête SQL, pointez sur le nom de la table pour afficher un avertissement. Si cet avertissement décrit la table comme dépréciée et affiche le nouveau nom de la table, cliquez sur Correctif rapide, suivi de Corriger la dépréciation. L’Assistant Databricks s’ouvre et vous propose de remplacer le nom de la table dépréciée par le nouveau nom de la table Unity Catalog. Suivez les invites pour accomplir la tâche.

Vidéo montrant la mise à jour d’une table Hive à l’aide de l’Assistant Databricks

Consultez également Utiliser l’Assistant Databricks.