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.

En plus de la prise en charge existante de la persistance des tables dans le metastore Hive, vous pouvez utiliser Unity Catalog avec vos pipelines Delta Live Tables pour :

  • Définissez un catalogue dans Unity Catalog où votre pipeline conservera les tables.
  • Lisez les données des tables Unity Catalog.

Votre espace de travail peut contenir des pipelines qui utilisent Unity Catalog ou le metastore Hive. Toutefois, un seul pipeline ne peut pas écrire dans le metastore Hive et Unity Catalog, et les pipelines existants ne peuvent pas être mis à niveau pour utiliser Unity Catalog. Vos pipelines existants qui n’utilisent pas Unity Catalog ne sont pas affectés par cette préversion et continueront à 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.

Les tables créées dans votre pipeline peuvent également être interrogées à partir de clusters Unity Catalog partagés à l’aide de Databricks Runtime 13.3 LTS et versions ultérieures ou d’un entrepôt SQL. Les tables ne peuvent pas être interrogées à partir de clusters d’isolement attribués ou pas.

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

Spécifications

Les éléments suivants sont requis pour créer des tables dans Unity Catalog à partir d’un pipeline Delta Live Tables :

  • Vous devez disposer de privilèges USE CATALOG sur le catalogue cible.
  • Vous devez disposer de CREATE MATERIALIZED VIEW privilèges et USE SCHEMA dans le schéma cible si votre pipeline crée des vues matérialisées.
  • Vous devez disposer de CREATE TABLE privilèges et USE SCHEMA dans 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.

Limitations

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

  • Par défaut, seuls le propriétaire du pipeline et les administrateurs de l’espace de travail ont le droit d’afficher les journaux des pilotes du cluster qui exécute un pipeline compatible Unity Catalog. Pour permettre à d’autres utilisateurs d’afficher les journaux des pilotes, consultez Autoriser des utilisateurs non-administrateurs à afficher les journaux des pilotes depuis un pipeline compatible Unity Catalog.

  • 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 avec Unity Catalog dans un espace de travail attaché à un metastore créé pendant la préversion publique d’Unity Catalog. Consultez Mise à niveau avec l’héritage des privilèges.

  • Les bibliothèques tierces (third-party libraries) et les fichiers JAR ne sont pas pris en charge.

  • 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 dans un notebook en aval.

  • La publication sur des schémas qui spécifient un emplacement de stockage managé n’est prise en charge que dans le canal de préversions.

  • 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é.

  • Si le schéma cible spécifie un emplacement de stockage, toutes les tables y sont stockées. 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 le catalogue cible en spécifie un. 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 où les tables sont publiées.

  • L’onglet Historique dans l’explorateur de catalogues n’affiche pas l’historique des tables de streaming et 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. Pour utiliser des fonctions définies par l'utilisateur (UDF) en Python, votre pipeline doit utiliser le canal de prévisualisation.

  • 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 event_logfonction table 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 event_logfonction table 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, veillez à spécifier au moins un worker lorsque vous configurez vos paramètres de calcul.

  • Les tables créées dans un pipeline avec Unity Catalog ne peuvent pas être interrogées à partir de clusters d’isolement affectés ou non. Pour interroger des tables créées par un pipeline Delta Live Tables, vous devez utiliser un cluster en mode d’accès partagé à l’aide de Databricks Runtime 13.3 LTS et versions ultérieures ou d’un entrepôt SQL.

  • Delta Live Tables utilise un cluster en mode d’accès partagé pour exécuter un pipeline avec Unity Catalog. Un pipeline avec Unity Catalog ne peut pas s’exécuter sur un cluster affecté. Pour en savoir plus sur les limitations du mode d’accès partagé avec Unity Catalog, consultez Limitations du mode d’accès partagé sur Unity Catalog.

  • Vous ne pouvez pas utiliser des filtres de lignes ou masques de colonne avec des vues matérialisées ou des tables de diffusion en continu publiées dans Unity Catalog.

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, supposez que la définition d’une vue matérialisée inclut une clause COUNT(DISTINCT field_a). 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.

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 de temps afin qu’elles puissent être récupérées si elles ont été supprimées par erreur. Les données peuvent être récupérées en ajoutant la vue matérialisée ou la table de diffusion en continu dans 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 ce changement, l’interface utilisateur Delta Live Tables est mise à jour pour vous inviter à confirmer la suppression d’un pipeline.
  • Les tables de sauvegarde internes, y compris les tables de sauvegarde 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 Catalogues. Pour en savoir plus sur les schémas dans Unity Catalog, consultez Schémas.

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 cloud_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 LIVE TABLE
  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 LIVE TABLE
  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
  cloud_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 des vues matérialisées (tables actives)

Par défaut, les tables créées par un pipeline ne peuvent être interrogées que par le propriétaire du 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.live_table
TO
  `user@databricks.com`

Révoquer la sélection sur une table

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
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. Pour les vues matérialisées ou les tables de diffusion en continu dans un pipeline avec Unity Catalog, l’interface utilisateur de traçabilité de l’explorateur de catalogues affiche les tables en amont et en aval. 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 de langage de manipulation de données (DML), notamment les instructions d’insertion, de mise à jour, de suppression et de fusion, pour modifier les tables de diffusion en continu publiées dans Unity Catalog. La prise en charge des requêtes DML sur les tables de streaming permet des cas d’usage tels que la mise à jour des tables pour la conformité au 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;