Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est disponible en préversion publique.
Important
La prise en charge des clones superficiels diffère pour les tables gérées et externes de Unity Catalog. Pour les tables managées, utilisez Databricks Runtime 13.3 LTS et versions ultérieures, et pour les tables externes, utilisez Databricks Runtime 14.3 LTS et versions ultérieures.
Vous pouvez uniquement cloner des tables managées de Unity Catalog vers des tables managées par Unity Catalog et des tables externes de Unity Catalog vers des tables externes de Unity Catalog. Le comportement VACUUM diffère entre les tables managées et externes. Consultez Utilisation de VACUUM avec les clones superficiels Unity Catalog.
Utilisez un clone peu profond pour créer des tables de catalogue Unity avec des privilèges de contrôle d’accès indépendants de leurs tables sources, sans copier les fichiers de données sous-jacents. Le clonage superficiel dans Unity Catalog est pris en charge uniquement pour les tables Delta Lake. Vous ne pouvez pas créer un clone peu profond d’un iceberg ou d’une autre table non delta.
Pour plus d’informations sur le clonage d’une table, consultez Cloner une table sur Azure Databricks.
Créer un clone superficiel géré par Unity Catalog
Créez un clone peu profond d’une table gérée dans le catalogue Unity.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Pour créer un clone peu profond managé sur le catalogue Unity, vous devez disposer des privilèges suivants sur les ressources source et cible.
| Ressource | Autorisations requises |
|---|---|
| schéma source | USE SCHEMA |
| Catalogue source | USE CATALOG |
| Schéma cible |
USE SCHEMA, CREATE TABLE |
| Catalogue cible | USE CATALOG |
Comme d’autres instructions de création de table, lorsque vous exécutez SHALLOW CLONE, vous êtes propriétaire de la table cible. Le propriétaire d’une table cible cloné contrôle les droits d’accès de cette table indépendamment de la table source. Le propriétaire d’une table clonée peut être différent du propriétaire d’une table d’origine.
Créer un clone externe peu profond du catalogue Unity
Créez un clone externe peu profond dans Unity Catalog en spécifiant un emplacement externe.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'
Pour créer un clone peu profond externe sur le catalogue Unity, vous devez disposer des privilèges suivants sur les ressources source et cible.
| Ressource | Autorisations requises |
|---|---|
| schéma source | USE SCHEMA |
| Catalogue source | USE CATALOG |
| Schéma cible |
USE SCHEMA, CREATE TABLE |
| Catalogue cible | USE CATALOG |
| Emplacement cible externe | CREATE EXTERNAL TABLE |
Utiliser des tables clonées peu profondes en mode d’accès standard
Pour interroger un clone superficiel en mode d’accès standard (anciennement mode d’accès partagé), vous devez disposer des privilèges suivants sur la table et les ressources qui la contiennent :
| Ressource | Autorisations requises |
|---|---|
| Catalog | USE CATALOG |
| Schema | USE SCHEMA |
| Table | SELECT |
Vous devez également disposer MODIFY d’autorisations sur la cible de l’opération clone pour exécuter les opérations suivantes :
INSERTDELETEUPDATEMERGECREATE TABLEDROP TABLE
Utiliser des tables clonées peu profondes en mode d’accès dédié
Lorsque vous utilisez des clones superficiels dans Unity Catalog en mode d’accès dédié (anciennement mode d’accès utilisateur unique), vous devez disposer des autorisations sur les ressources de la table source du clone ainsi que de la table cible.
Pour les requêtes simples, en plus des autorisations requises sur la table cible, vous devez avoir les autorisations USE sur le catalogue source et sur le schéma source, ainsi que les autorisations SELECT sur la table source. Pour toutes les requêtes qui mettent à jour ou insère des enregistrements dans la table cible, vous devez également disposer MODIFY d’autorisations sur la table source.
Databricks recommande d’utiliser des clones Unity Catalog sur un calcul avec mode d’accès standard, car cela permet de modifier indépendamment les autorisations des cibles de clonage superficiel Unity Catalog et des tables sources correspondantes.
Utiliser VACUUM avec des clones superficiels du catalogue Unity
Lorsque vous utilisez des tables managées Unity Catalog pour la source et la cible d’une opération de clonage superficiel, Unity Catalog gère les fichiers de données sous-jacents pour améliorer la fiabilité de la source et de la cible de l’opération de clonage. L’exécution de VACUUM sur la source d’un clone superficiel n’endommage pas la table clonée.
Normalement, lorsque VACUUM identifie des fichiers valides pour un seuil de rétention donné, seules les métadonnées de la table actuelle sont prises en compte. Toutefois, la prise en charge du clonage superficiel dans Unity Catalog assure le suivi des relations entre toutes les tables clonées et les fichiers de données source, de sorte que la liste des fichiers valides est étendue pour inclure les fichiers de données nécessaires pour répondre aux requêtes visant à la fois les tables clonées superficiellement et la table source.
Pour VACUUM un clone peu profond du catalogue Unity, un fichier de données valide est n’importe quel fichier dans le seuil de rétention spécifié pour la table source ou toute table cloné. Les tables managées et les tables externes ont des comportements légèrement différents.
Ce suivi amélioré des métadonnées modifie la façon dont VACUUM les opérations affectent les fichiers de données sous-jacents pour les tables Delta Lake, avec le comportement suivant :
- Pour les tables gérées,
VACUUMles opérations sur la source ou la cible d’une opération de clone peu profond peuvent supprimer des fichiers de données de la table source. - Pour les tables externes, les opérations
VACUUMsuppriment uniquement les fichiers de données de la table source lors de l’exécution sur la table source. - Seuls les fichiers de données qui ne sont pas considérés comme valides pour la table source ou tout clone superficiel sur la source sont supprimés.
- Si plusieurs clones superficiels sont définis sur une table source unique, l’exécution de
VACUUMsur l’une des tables clonées ne supprime pas les fichiers de données valides pour d’autres tables clonées.
Remarque
Databricks recommande de ne jamais exécuter VACUUM avec un paramètre de rétention de moins de 7 jours pour éviter d’endommager les transactions de longue durée en cours. Si vous avez besoin d’un seuil de rétention inférieur, réfléchissez à la différence entre l’effet de VACUUM sur les clones superficiels dans Unity Catalog et celui de VACUUM sur d’autres tables clonées dans Azure Databricks. Pour plus d’informations, consultez Cloner une table sur Azure Databricks.
Même si vous supprimez une table clonée superficiellement, vous pourriez avoir besoin de l’accès SELECT à cette table clonée superficiellement pour exécuter VACUUM sur la table de base. Databricks lit le journal Delta du clone superficiel pour vérifier les fichiers de données de table de base auxquels le clone fait toujours référence avant de les vider. Databricks maintient ce lien pendant 7 jours après la suppression d’une table clonée superficiellement afin de prendre en charge l’opération UNDROP. En mode d’accès standard, toutefois, cette autorisation n’est pas requise.
Supprimer la table de base pour un clone peu profond
Vous pouvez supprimer la table de base d’une table gérée par Unity Catalog même lorsque des clones superficiels actifs y font encore référence. Les clones continuent de lire jusqu’à ce que les fichiers de données de la table de base soient supprimés, ce qui les rend alors inutilisables. Vous pouvez restaurer la table de base avec UNDROP pendant sa période de récupération, dont la durée par défaut est de 7 jours et qui peut être définie au niveau du catalogue ou du schéma sur 0 (pour désactiver la récupération) ou sur une valeur comprise entre 7 et 30 jours. La configuration de la période de récupération se fait en Aperçu public. Si vous ne restaurez pas la table, un processus de purge asynchrone supprime ses fichiers de données après la fin de la période de récupération, permettant aux clones de continuer à lire un certain temps après que la table de base ne soit plus récupérable. Pour récupérer une table de base tombée, utilisez UNDROP.
Remarque
Certains espaces de travail imposent une protection contre le temps de chute pour les tables de base qui ont des clones peu profonds. Si DROP TABLE sur une telle table de base échoue avec l’erreur CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE, votre espace de travail impose cette protection. Pour supprimer la table de base de toute façon, utilisez DROP TABLE ... FORCE. La suppression de la table de base avec FORCE rompt les clones superficiels qui y font référence. Les clones échouent sur les opérations qui lisent des données ou des métadonnées (par exemple, SELECT, INSERT, UPDATE, DESCRIBE HISTORY, CLONE), mais restent visibles pour les opérations au niveau des métadonnées (par exemple, SHOW TABLES, DROP TABLE) afin que vous puissiez les nettoyer. Cette protection ne s’applique qu’aux tables gérées par Unity Catalog.
Limitations
- Le clone superficiel n’est pris en charge que pour les tables Delta Lake. Vous ne pouvez pas créer un clone peu profond d’un iceberg ou d’une autre table non delta.
- Vous ne pouvez pas utiliser
CREATE OR REPLACEpour remplacer un clone peu profond existant. UtilisezDROP TABLEsuivi deCREATE TABLE, ou utilisez un nouveau nom de table. - Les clones superficiels sur des tables externes doivent être des tables externes. Les clones superficiels sur les tables managées doivent être des tables managées.
- Vous ne pouvez pas partager de clones peu profonds à l’aide d’OpenSharing.
- Il est impossible d'imbriquer des clones superficiels, c'est-à-dire que vous ne pouvez pas créer un clone superficiel à partir d'un autre clone superficiel.
- Pour les tables externes,
DROP TABLEcela ne supprime pas les fichiers de données sous-jacents, donc les clones superficiels ne sont pas affectés lorsque la table source est supprimée. - Pour les tables gérées dans Databricks Runtime 13.3 LTS et versions ultérieures, les clones superficiels d’une table source supprimée continuent de fonctionner jusqu’à la suppression des fichiers de données source. Consultez Supprimer la table de base pour un clone peu profond.