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.
Databricks recommande de configurer des pipelines déclaratifs Spark Lakeflow avec le catalogue Unity. L’utilisation du catalogue Unity est la valeur par défaut pour les pipelines nouvellement créés.
Les pipelines configurés avec Unity Catalog publient toutes les vues matérialisées définies et les tables de streaming dans le catalogue et le schéma spécifiés. Les pipelines de Unity Catalog peuvent lire à partir d’autres tables et volumes de Unity Catalog.
Pour gérer les autorisations sur les tables créées par un pipeline de catalogue Unity, utilisez GRANT et REVOKE.
Note
Cet article décrit les fonctionnalités du mode de publication par défaut actuel pour les pipelines. Les pipelines créés avant le 5 février 2025 pourraient utiliser le mode de publication hérité et le schéma virtuel LIVE. Consultez le schéma en direct (hérité).
Exigences
Pour créer des tables de streaming et des vues matérialisées dans un schéma cible dans le catalogue Unity, vous devez disposer des autorisations suivantes sur le schéma et le catalogue parent :
- Privilèges
USE CATALOGsur le catalogue cible. - Utilisez les privilèges
CREATE MATERIALIZED VIEWetUSE SCHEMAsur le schéma cible si votre pipeline crée des vues matérialisées. - Privilèges
CREATE TABLEetUSE SCHEMAsur le schéma cible si votre pipeline crée tables de streaming. - Si votre pipeline crée de nouveaux schémas, vous devez disposer de privilèges
USE CATALOGetCREATE SCHEMAsur le catalogue cible.
Exigences de calcul pour exécuter un pipeline compatible avec le catalogue Unity :
- Votre ressource de calcul doit être configurée avec le mode d’accès standard. Le calcul dédié n’est pas pris en charge. Consultez les modes d’accès.
Le calcul requis pour interroger des tables créées par des pipelines à l’aide du catalogue Unity (y compris les tables de diffusion en continu et les vues matérialisées) inclut l’une des opérations suivantes :
- Entrepôts SQL
- Calcul du mode d’accès standard sur Databricks Runtime 13.3 LTS ou version ultérieure.
- Calcul du mode d’accès dédié, si le contrôle d’accès affiné est activé sur le calcul dédié (autrement dit, il s’exécute sur Databricks Runtime 15.4 ou version ultérieure et que le calcul serverless est activé pour l’espace de travail). Pour plus d’informations, consultez Contrôle d’accès affiné sur le calcul dédié.
- Mode d’accès dédié pour le calcul sur 13.3 LTS à travers 15.3, uniquement si le propriétaire de la table exécute la requête.
Des limitations de calcul supplémentaires s’appliquent. Consultez la section suivante.
Limites
Voici des limitations lors de l’utilisation du catalogue Unity avec des pipelines :
- Par défaut, seuls le propriétaire du pipeline et les administrateurs de l’espace de travail peuvent afficher les journaux des pilotes du calcul qui exécute un pipeline compatible Unity Catalog. Pour permettre à d’autres utilisateurs d’accéder aux journaux des pilotes, consultez Autoriser les utilisateurs non administrateurs à afficher les journaux des pilotes à partir d’un pipeline compatible avec le catalogue Unity.
- Les pipelines existants qui utilisent le metastore Hive ne peuvent pas être mis à niveau pour utiliser Unity Catalog. Pour migrer un pipeline existant qui écrit dans le metastore Hive, vous devez créer un nouveau pipeline et réingestionner des données à partir de la ou des sources de données. Consultez Créer un pipeline Unity Catalog en clonant un pipeline de metastore Hive.
- Vous ne pouvez pas créer un pipeline compatible avec le catalogue Unity dans un espace de travail attaché à un metastore créé pendant la préversion publique du catalogue Unity. Consultez Mise à niveau vers l’héritage des privilèges.
- Les fichiers JAR ne sont pas pris en charge. Seules les bibliothèques Python tierces sont prises en charge. Consultez Gérer les dépendances Python pour les pipelines.
- Les requêtes en langage de manipulation de données (DML) qui modifient le schéma d’une table de streaming ne sont pas prises en charge.
- Une vue matérialisée créée dans un pipeline ne peut pas être utilisée comme source de streaming en dehors de ce pipeline, par exemple dans un autre pipeline ou un notebook en aval.
- Les données des vues matérialisées et des tables de streaming sont stockées à l'emplacement de stockage du schéma contenant. Si aucun emplacement de stockage de schéma n’est spécifié, les tables sont stockées dans l’emplacement de stockage du catalogue. Si les emplacements de stockage de schéma et de catalogue ne sont pas spécifiés, les tables sont stockées dans l’emplacement de stockage racine du metastore.
- L’onglet Historique de l’Explorateur de catalogues n’affiche pas l’historique des vues matérialisées.
- La propriété
LOCATIONn’est pas prise en charge lors de la définition d’une table. - Les pipelines avec Unity Catalog ne peuvent pas publier dans le metastore Hive.
- Le support des fonctions définies par l'utilisateur (UDF) Python est en Préversion publique.
Note
Les fichiers sous-jacents prenant en charge les vues matérialisées peuvent inclure des données provenant de tables en amont (y compris d’éventuelles informations d’identification personnelle) qui n’apparaissent pas dans la définition de la vue matérialisée. Ces données sont automatiquement ajoutées au stockage sous-jacent pour prendre en charge l’actualisation incrémentielle des vues matérialisées.
Étant donné que les fichiers sous-jacents d’une vue matérialisée peuvent risquer d’exposer des données provenant de tables en amont qui ne font pas partie du schéma de vue matérialisée, Databricks recommande de ne pas partager le stockage sous-jacent avec des consommateurs en aval non approuvés.
Par exemple, supposons qu’une définition de vue matérialisée inclut une COUNT(DISTINCT field_a) clause. Même si la définition de vue matérialisée inclut uniquement la clause d’agrégation COUNT DISTINCT, les fichiers sous-jacents contiennent une liste des valeurs réelles de field_a.
Puis-je utiliser des pipelines de metastore Hive et de catalogue Unity ensemble ?
Votre espace de travail peut contenir des pipelines qui utilisent le catalogue Unity et le metastore Hive hérité. Toutefois, un seul pipeline ne peut pas écrire dans le metastore Hive et le Unity Catalog. Les pipelines existants qui écrivent dans le metastore Hive ne peuvent pas être mis à niveau pour utiliser le catalogue Unity. Pour migrer un pipeline existant qui écrit dans le metastore Hive, vous devez créer un nouveau pipeline et réingestionner des données à partir de la ou des sources de données. Consultez Créer un pipeline Unity Catalog en clonant un pipeline de metastore Hive.
Les pipelines existants qui n’utilisent pas Unity Catalog ne sont pas affectés par la création de pipelines configurés avec le catalogue Unity. Ces pipelines continuent de conserver les données dans le metastore Hive à l’aide de l’emplacement de stockage configuré.
Sauf indication contraire dans ce document, toutes les sources de données et fonctionnalités de pipeline existantes sont prises en charge avec les pipelines qui utilisent le catalogue Unity. Les interfaces Python et SQL sont prises en charge avec les pipelines qui utilisent Unity Catalog.
Tables inactives
Lorsqu’un pipeline est configuré pour conserver les données dans le catalogue Unity, le pipeline gère le cycle de vie et les autorisations de la table.
Les tables peuvent devenir inactives si leur définition est supprimée d’un pipeline. La prochaine mise à jour du pipeline marque la vue matérialisée ou l'entrée de table de diffusion en continu correspondante comme inactive.
Si vous modifiez le catalogue ou le schéma par défaut du pipeline et que vous n’utilisez pas de noms de tables complets dans le code source du pipeline, l’exécution de pipeline suivante crée la vue matérialisée ou la table de diffusion en continu dans le nouveau catalogue ou schéma, et la table de diffusion en continu ou la vue matérialisée précédente dans l’ancien emplacement est marquée comme inactive.
Vous pouvez toujours interroger des tables inactives, mais le pipeline ne les met plus à jour. Pour nettoyer les vues matérialisées ou les tables de diffusion en continu, explicitement DROP la table. Les tables inactives sont supprimées lorsque le pipeline est supprimé.
- Vous pouvez récupérer les tables supprimées dans les 7 jours à l’aide de la
UNDROPcommande. - Pour conserver le comportement hérité où la vue matérialisée ou l’entrée de table de diffusion en continu est supprimée de Unity Catalog lors de la prochaine mise à jour du pipeline, définissez la configuration du pipeline
"pipelines.dropInactiveTables": "true". Les données réelles sont conservées pendant une période afin qu’elles puissent être récupérées si elles sont supprimées par erreur. Les données peuvent être récupérées dans les 7 jours en ajoutant la vue matérialisée ou la table de diffusion en continu dans la définition du pipeline.
La suppression du pipeline entièrement (par opposition à la suppression d’une définition de table de la source du pipeline) supprime également toutes les tables définies dans ce pipeline. L’interface utilisateur vous invite à confirmer la suppression d’un pipeline.
Écrire des tables dans le catalogue Unity à partir d’un pipeline
Pour écrire vos tables dans le catalogue Unity, vous devez configurer votre pipeline pour qu’il fonctionne via votre espace de travail. Lorsque vous créez un pipeline, sélectionnez Catalogue Unity sous Options de stockage, sélectionnez un catalogue dans le menu déroulant Catalogue , puis sélectionnez un schéma existant ou entrez le nom d’un nouveau schéma dans le menu déroulant Schéma cible. Pour en savoir plus sur les catalogues Unity Catalog, consultez Présentation des catalogues dans Azure Databricks. Pour en savoir plus sur les schémas dans Unity Catalog, consultez Présentation des schémas dans Azure Databricks.
Ingérer des données dans un pipeline Unity Catalog
Votre pipeline configuré pour utiliser Unity Catalog peut lire les données à partir de :
- Tables externes et managées Unity Catalog, vues, vues matérialisées et tables de streaming.
- Tables et vues du metastore Hive.
- Chargeur automatique utilisant la fonction
read_files()pour lire à partir d’emplacements externes Unity Catalog. - Apache Kafka et Amazon Kinesis.
Voici des exemples de lecture à partir de tables Unity Catalog et metastore Hive.
Ingestion par lots à partir d’une table Unity Catalog
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dp.materialized_view
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Diffuser en continu les modifications à partir d’une table Unity Catalog
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dp.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Ingérer des données à partir du metastore Hive
Un pipeline qui utilise Unity Catalog peut lire les données des tables de metastore Hive à l’aide du catalogue hive_metastore :
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dp.materialized_view
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Ingérer des données à partir d’Auto Loader
SQL
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "json"
)
Python
@dp.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Partager les vues matérialisées
Par défaut, seul le propriétaire du pipeline dispose de l’autorisation d’interroger les jeux de données créés par le pipeline. Vous pouvez donner à d’autres utilisateurs la possibilité d’interroger une table à l’aide d’instructions GRANT et vous pouvez révoquer l’accès aux requêtes à l’aide d’instructions REVOKE. Pour plus d’informations sur les privilèges dans Unity Catalog, consultez Gérer les privilèges dans Unity Catalog.
Accorder la sélection sur une table
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Révoquer la sélection sur une table
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Accorder des privilèges de création de table ou de création d’une vue matérialisée
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Afficher la traçabilité d’un pipeline
La traçabilité des tables définies dans les pipelines est visible dans l'Explorateur du Catalogue. L’interface utilisateur de traçabilité de l’Explorateur de catalogues affiche les tables en amont et en aval pour les vues matérialisées ou les tables de diffusion en continu dans un pipeline avec Unity Catalog. Pour en savoir plus sur la traçabilité du catalogue Unity, consultez Afficher la traçabilité des données à l’aide du catalogue Unity.
Pour une vue matérialisée ou une table de streaming dans un pipeline compatible avec Unity Catalog, l’interface de traçabilité de Catalog Explorer établira également un lien vers le pipeline qui a produit la vue matérialisée ou la table de streaming, si le pipeline est accessible à partir de l’espace de travail actuel.
Ajouter, modifier ou supprimer des données dans une table de streaming
Vous pouvez utiliser des instructions DML (Data Manipulation Language), notamment les instructions insert, update, delete et merge, pour modifier les tables de streaming publiées dans Unity Catalog. La prise en charge des requêtes DML sur les tables de diffusion en continu permet des cas d'utilisation tels que la mise à jour des tables pour assurer la conformité avec le Règlement général sur la protection des données (RGPD).
Note
- Les instructions DML qui modifient le schéma de table d’une table de streaming ne sont pas prises en charge. Assurez-vous que vos instructions DML ne tentent pas de faire évoluer le schéma de table.
- Les instructions DML qui mettent à jour une table de streaming ne peuvent être exécutées que dans un cluster Unity Catalog partagé ou un entrepôt SQL à l’aide de Databricks Runtime 13.3 LTS et versions ultérieures.
- Étant donné que le streaming nécessite des sources de données en ajout uniquement, si votre traitement nécessite le streaming à partir d'une table source de streaming avec des modifications (par exemple, via des instructions DML), définissez l'indicateur skipChangeCommits lors de la lecture de la table de streaming source. Lorsque
skipChangeCommitsest défini, les transactions qui suppriment ou modifient des enregistrements sur la table source sont ignorées. Si votre traitement ne nécessite pas de table de flux, vous pouvez utiliser une vue matérialisée (qui n’a pas la restriction d’ajout uniquement) comme table cible.
Voici des exemples d’instructions DML permettant de modifier des enregistrements dans une table de diffusion en continu.
Supprimez des enregistrements avec un ID spécifique :
DELETE FROM my_streaming_table WHERE id = 123;
Mettez à jour les enregistrements avec un ID spécifique :
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publier des tables avec des filtres de lignes et des masques de colonne
Les filtres de lignes vous permettent de spécifier une fonction qui s’applique en tant que filtre chaque fois qu’une analyse de table extrait des lignes. Ces filtres permettent de vérifier que les requêtes suivantes retournent uniquement les lignes pour lesquelles le prédicat de filtre a la valeur true.
Les masques de colonne vous permettent de masquer les valeurs d’une colonne chaque fois qu’une analyse de table récupère des lignes. Les futures requêtes pour cette colonne retournent le résultat de la fonction évaluée au lieu de la valeur d’origine de la colonne. Pour plus d’informations sur l’utilisation des filtres de lignes et des masques de colonne, consultez Filtres de lignes et masques de colonne.
Gestion des filtres de lignes et des masques de colonne
Les filtres de lignes et les masques de colonnes sur des vues matérialisées et des tables de diffusion en continu doivent être ajoutés, mis à jour ou supprimés via l’instruction CREATE OR REFRESH.
Pour obtenir une syntaxe détaillée sur la définition de tables avec des filtres de lignes et des masques de colonnes, consultez la référence du langage SQL pour les pipelines et la référence du langage Python pour les pipelines déclaratifs Lakeflow Spark.
Comportement
Les détails suivants sont importants lors de l’utilisation de filtres de lignes ou de masques de colonne dans un pipeline :
-
Actualiser en tant que propriétaire : lorsqu’une mise à jour de pipeline actualise une vue matérialisée ou une table de diffusion en continu, les fonctions de filtre de lignes et de masque de colonne s’exécutent avec les droits du propriétaire du pipeline. Cela signifie que l’actualisation de la table utilise le contexte de sécurité de l’utilisateur qui a créé le pipeline. Les fonctions qui vérifient le contexte utilisateur (par
CURRENT_USERexemple etIS_MEMBER) sont évaluées à l’aide du contexte utilisateur du propriétaire du pipeline. -
Requête : lors de l’interrogation d’une vue matérialisée ou d’une table de diffusion en continu, les fonctions qui vérifient le contexte utilisateur (par
CURRENT_USERexemple etIS_MEMBER) sont évaluées à l’aide du contexte utilisateur de l’appelant. Cette approche applique la sécurité des données et les contrôles d’accès spécifiques à l’utilisateur en fonction du contexte de l’utilisateur actuel. - Lors de la création de vues matérialisées sur des tables sources qui contiennent des filtres de lignes et des masques de colonne, l’actualisation de la vue matérialisée est toujours complète. Une actualisation complète retraite toutes les données disponibles dans la source avec les dernières définitions. Ce processus vérifie que les stratégies de sécurité sur les tables sources sont évaluées et appliquées avec les données et les définitions les plus à jour.
Observability
Utilisez DESCRIBE EXTENDED, INFORMATION_SCHEMAou l’Explorateur de catalogues pour examiner les filtres de lignes et les masques de colonne existants qui s’appliquent à une vue matérialisée ou à une table streaming donnée. Cette fonctionnalité permet aux utilisateurs d’auditer et d’examiner les mesures d’accès aux données et de protection sur les vues matérialisées et les tables de diffusion en continu.