Utilisez Unity Catalog avec vos pipelines Delta Live Tables

Important

La prise en charge de Delta Live Tables pour Unity Catalog est en préversion publique.

Databricks recommande de configurer des pipelines Delta Live Tables avec le catalogue Unity.

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 catalogue Unity peuvent lire à partir d’autres tables et volumes de catalogue Unity.

Pour gérer les autorisations sur les tables créées par un pipeline Unity Catalog, utilisez GRANT et REVOKE.

Spécifications

Autorisations requises pour créer des tables dans le catalogue Unity à partir d’un pipeline Delta Live Tables :

  • USE CATALOG privilèges sur le catalogue cible.
  • CREATE MATERIALIZED VIEW et USE SCHEMA des privilèges sur le schéma cible si votre pipeline crée des vues matérialisées.
  • CREATE TABLE et USE SCHEMA des privilèges sur le schéma cible si votre pipeline crée des tables de streaming.
  • Si un schéma cible n’est pas spécifié dans les paramètres du pipeline, vous devez disposer CREATE MATERIALIZED VIEW de privilèges ou CREATE TABLE sur au moins un schéma du catalogue cible.

Calcul nécessaire pour exécuter un pipeline avec catalogue Unity :

Le calcul requis pour interroger des tables créées par un pipeline Delta Live Tables à l’aide du catalogue Unity (y compris les tables de streaming et les vues matérialisées) inclut l’une des options suivantes :

  • Entrepôts SQL

  • Clusters en mode d’accès partagé sur Databricks Runtime 13.3 LTS ou versions ultérieures.

  • Clusters en mode d’accès mono-utilisateur (ou « affecté ») si le contrôle d’accès affiné est activé sur le cluster mono-utilisateur (autrement dit, le cluster 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’un seul utilisateur.

  • Clusters en mode d’accès mono-utilisateur (ou « attribué ») sur 13.3 LTS à 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.

Limitations

Les limitations suivantes sont liées à l’utilisation d’Unity Catalog avec Delta Live Tables :

  • Par défaut, seuls les administrateurs du propriétaire et de l’espace de travail du pipeline peuvent afficher les journaux du pilote à partir du cluster qui exécute un pipeline compatible avec le catalogue Unity. 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.

  • 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 avec 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 Delta Live Tables.

  • 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 Delta Live Tables 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.

  • Si un pipeline publie sur un schéma avec un emplacement de stockage managé, le schéma peut être modifié dans une mise à jour ultérieure, mais uniquement si le schéma mis à jour utilise le même emplacement de stockage que le schéma précédemment spécifié.

  • Les tables sont stockées à l’emplacement de stockage du schéma cible. 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 tables de streaming ou des vues matérialisées.

  • La propriété LOCATION n’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) en Python est en Public Preview.

  • Vous ne pouvez pas utiliser Delta Sharing avec une vue matérialisée Delta Live Tables ou une table de streaming publiée dans Unity Catalog.

  • Vous ne pouvez pas utiliser la fonction table event_log dans un pipeline ou une requête pour accéder aux journaux d’événements de plusieurs pipelines.

  • Vous ne pouvez pas partager une vue créée sur la fonction table event_log avec d’autres utilisateurs.

  • Les clusters à nœud unique ne sont pas pris en charge avec les pipelines Unity Catalog. Étant donné que Delta Live Tables peut créer un cluster à nœud unique pour exécuter des pipelines plus petits, votre pipeline peut échouer avec un message d’erreur référençant single-node mode. Si cela se produit, spécifiez au moins un worker lorsque vous configurez le calcul. Consultez Configurer le calcul pour un pipeline Delta Live Tables.

Remarque

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 catalogue Unity. Les pipelines existants qui écrivent dans le metastore Hive ne peuvent pas être mis à niveau pour utiliser le catalogue Unity.

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 existantes et la fonctionnalité Delta Live Tables sont prises en charge avec les pipelines qui utilisent Unity Catalog. Les interfaces Python et SQL sont prises en charge avec les pipelines qui utilisent Unity Catalog.

Modifications apportées aux fonctionnalités existantes

Lorsque Delta Live Tables est configuré pour conserver les données dans Unity Catalog, le cycle de vie de la table est géré par le pipeline Delta Live Tables. Étant donné que le pipeline gère le cycle de vie et les autorisations de la table :

  • Lorsqu’une table est supprimée de la définition du pipeline Delta Live Tables, l’entrée de vue matérialisée ou de table de streaming correspondante est supprimée d’Unity Catalog lors de la prochaine mise à jour du pipeline. 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 en ajoutant la vue matérialisée ou >en revenant à la définition du pipeline.
  • La suppression du pipeline Delta Live Tables entraîne la suppression de toutes les tables définies dans ce pipeline. En raison de cette modification, l’interface utilisateur Delta Live Tables est mise à jour pour vous inviter à confirmer la suppression d’un pipeline.
  • Les tables de stockage internes, y compris celles utilisées pour prendre en charge APPLY CHANGES INTO, ne sont pas directement accessibles par les utilisateurs.

Écrire des tables dans Unity Catalog à partir d’un pipeline Delta Live Tables

Remarque

Si vous ne sélectionnez pas de catalogue et de schéma cible pour un pipeline, les tables ne sont pas publiées dans Unity Catalog et sont accessibles uniquement par des requêtes du même pipeline.

Pour écrire vos tables dans Unity Catalog, lorsque vous créez un pipeline, sélectionnez Unity Catalog sous Storage options, sélectionnez un catalogue dans le menu déroulant Catalog, puis sélectionnez un schéma existant ou entrez le nom d’un nouveau schéma dans le menu déroulant Target schema. 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

@dlt.table
def table_name():
  return spark.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

@dlt.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 hive_metastore catalogue :

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.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
  read_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.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’un pipeline Delta Live Tables est visible dans l’explorateur de catalogues. L’interface utilisateur de traçabilité de l’Explorateur de catalogue 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 catalogue Unity. Pour plus d’informations sur la traçabilité d’Unity Catalog, consultez Capturer et afficher la traçabilité des données avec Unity Catalog.

Pour une vue matérialisée ou une table de diffusion en continu dans un pipeline Delta Live Tables avec Unity Catalog, l’interface utilisateur de traçabilité de l’explorateur de catalogues sera également liée au 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 diffusion en continu publiées dans le catalogue Unity. La prise en charge des requêtes DML sur les tables de diffusion en continu permet de mettre à jour des tables telles que la mise à jour des tables pour la conformité avec le Règlement général sur la protection des données (RGPD).

Remarque

  • 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 skipChangeCommits est 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 diffusion, 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

Important

Cette fonctionnalité est disponible en préversion publique.

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 colonnes vous permettent de masquer les valeurs d’une colonne chaque fois qu’une analyse de table extrait 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 de filtres de lignes et de masques de colonne, consultez Filtrer les données de table sensibles à l’aide de filtres de lignes et de 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 colonne, consultez la référence du langage SQL Delta Live Tables et la référence du langage Python Delta Live Tables.

Comportement

Les détails suivants sont importants lors de l’utilisation de filtres de lignes ou de masques de colonne dans les pipelines Delta Live Tables :

  • Actualiser en tant que propriétaire : lorsqu’une mise à jour du 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 exemple, CURRENT_USER et IS_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 exemple, CURRENT_USER et IS_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.

Observabilité

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.