Share via


Lire les données partagées à l'aide du partage Delta Databricks-to-Databricks (pour les destinataires)

Cet article décrit comment lire les données qui ont été partagées avec vous en utilisant le protocole Delta Sharing Databricks-to-Databricks, dans lequel Databricks gère une connexion sécurisée pour le partage de données. Contrairement au protocole Delta Sharing de partage ouvert, le protocole Databricks-to-Databricks ne nécessite pas de fichier d’informations d’identification (sécurité basée sur un jeton).

Le partage Databricks-to-Databricks nécessite que vous, en tant que destinataire, ayez accès à un espace de travail Databricks activé pour Unity Catalog.

Si vous ne disposez pas d'un espace de travail Databricks activé pour Unity Catalog, les données doivent être partagées avec vous à l'aide du protocole de partage ouvert Delta Sharing et cet article ne vous concerne pas. Voir Lire les données partagées à l'aide du partage ouvert Delta Sharing (pour les destinataires).

Comment rendre les données partagées disponibles pour mon équipe ?

Pour lire les données et les notebooks qui ont été partagés avec vous avec le protocole de Databricks à Databricks, vous devez être utilisateur d’un espace de travail Databricks activé pour Unity Catalog. Un membre de votre équipe attribue au fournisseur de données un identificateur unique pour votre metastore Unity Catalog et le fournisseur de données utilise cet identificateur pour créer une connexion de partage sécurisée avec votre organisation. Les données partagées deviennent alors disponibles pour l’accès en lecture dans votre espace de travail, et toutes les mises à jour effectuées par le fournisseur de données sur les tables, volumes et partitions partagés sont reflétées dans votre espace de travail en quasi-temps réel.

Remarque

Les mises à jour des tables de données, vues et volumes partagés s’affichent dans votre espace de travail en quasi-temps réel. Toutefois, les changements de colonne (ajout, renommage, suppression) peuvent ne pas s’afficher dans Catalog Explorer pendant une minute maximum. De même, les nouveaux partages et les mises à jour des partages (comme l’ajout de nouvelles tables à un partage) sont mis en cache pendant une minute avant que vous puissiez les voir et les interroger.

Pour lire les données qui ont été partagées avec vous :

  1. Un utilisateur de votre équipe recherche le partage (le conteneur des tables, vues, volumes et notebooks qui ont été partagés avec vous) et utilise ce partage pour créer un catalogue (le conteneur de niveau supérieur de toutes les données dans Databricks Unity Catalog).
  2. Un autre utilisateur de votre équipe accorde ou refuse l’accès au catalogue et aux objets qu’il contient (schémas, tables, vues et volumes) à d’autres membres de votre équipe.
  3. Vous lisez les données des tables, vues et volumes auquels l’accès vous a été accordé comme pour n’importe quelle autre ressource de données dans Databricks sur laquelle vous avez accès en lecture seule (SELECT ou READ VOLUME).
  4. Vous affichez un aperçu des notebooks dans le partage et les clonez, tant que vous disposez du privilège USE CATALOG sur le catalogue.

Autorisations requises

Pour pouvoir répertorier et afficher les détails sur tous les fournisseurs et partages de fournisseurs, vous devez être un administrateur de metastore ou disposer du privilège USE PROVIDER. Les autres utilisateurs n’ont accès qu’aux fournisseurs et partages qu’ils possèdent.

Pour créer un catalogue à partir d’un partage de fournisseur, vous devez être un administrateur de metastore, un utilisateur disposant des privilèges CREATE_CATALOG et USE PROVIDER pour votre metastore Unity Catalog, ou un utilisateur disposant à la fois des privilèges CREATE_CATALOG et de la propriété de l’objet fournisseur.

La capacité à accorder un accès en lecture seule aux schémas (bases de données), tables, vues et volumes du catalogue créé à partir du partage suit la hiérarchie de privilèges Unity Catalog classique. La possibilité d’afficher les notebooks dans le catalogue créé à partir du partage nécessite le privilège USE CATALOG sur le catalogue. Consultez Gérer les autorisations pour les schémas, tables et volumes dans un catalogue Delta Sharing.

Voir les fournisseurs et les partages

Pour commencer à lire les données qui ont été partagées avec vous par un fournisseur de données, vous devez connaître le nom du fournisseur et les objets de partage qui sont stockés dans votre metastore Unity Catalog une fois que le fournisseur a partagé des données avec vous.

L’objet fournisseur représente le metastore Unity Catalog, la plateforme cloud et la région de l’organisation qui a partagé les données avec vous.

L’objet de partage représente les tables, volumes et vues que le fournisseur a partagés avec vous.

Voir tous les fournisseurs qui ont partagé des données avec vous

Pour consulter une liste des fournisseurs de données, vous pouvez utiliser Catalog Explorer, l’interface CLI de Databricks Unity Catalog ou la commande SQL SHOW PROVIDERS dans un notebook Azure Databricks ou dans l’éditeur de requête SQL Databricks.

Autorisations requises : vous devez être un administrateur de metastore ou disposer du privilège USE PROVIDER. Les autres utilisateurs n’ont accès qu’aux fournisseurs et partages de fournisseurs qu’ils possèdent.

Pour plus d’informations, consultez Voir les fournisseurs.

Voir les détails du fournisseur

Pour consulter les détails d’un fournisseur, vous pouvez utiliser Catalog Explorer, l’interface CLI de Databricks Unity Catalog ou la commande SQL DESCRIBE PROVIDER dans un notebook Azure Databricks ou dans l’éditeur de requête SQL Databricks.

Autorisations requises : vous devez être un administrateur de metastore, disposer du privilège USE PROVIDER ou posséder l’objet fournisseur.

Pour plus d’informations, consultez Voir les détails du fournisseur.

Voir les partages

Pour consulter les partages qu’un fournisseur a effectués avec vous, vous pouvez utiliser Catalog Explorer, l’interface CLI de Databricks Unity Catalog ou la commande SQL SHOW SHARES IN PROVIDER dans un notebook Azure Databricks ou dans l’éditeur de requête SQL Databricks.

Autorisations requises : vous devez être un administrateur de metastore, disposer du privilège USE PROVIDER ou posséder l’objet fournisseur.

Pour plus d’informations, consultez Voir les partages qu’un fournisseur a partagés avec vous.

Accéder aux données dans une table ou un volume partagé

Pour lire des données dans une table ou un volume partagé :

  1. Un utilisateur privilégié doit créer un catalogue à partir du partage qui contient la table ou le volume. Cette opération peut être réalisée par un administrateur de metastore, un utilisateur disposant des privilèges CREATE_CATALOG et USE PROVIDER pour votre metastore Unity Catalog, ou un utilisateur disposant à la fois des privilèges CREATE_CATALOG et de la propriété de l’objet fournisseur.
  2. Cet utilisateur ou un utilisateur avec les mêmes privilèges doit vous accorder l’accès à la table ou au volume partagé.
  3. Vous pouvez accéder à la table ou au volume comme vous le feriez pour toute autre ressource de données inscrite dans votre metastore Unity Catalog.

Créer un catalogue à partir d’un partage

Pour rendre les données d’un partage accessibles à votre équipe, vous devez créer un catalogue à partir du partage. Pour créer un catalogue à partir d’un partage, vous pouvez utiliser Catalog Explorer, l’interface CLI Databricks Unity Catalog ou des commandes SQL dans un notebook Azure Databricks ou dans l’éditeur de requête Databricks SQL.

Autorisations requises : un administrateur de metastore, un utilisateur disposant des privilèges CREATE_CATALOG et USE PROVIDER pour votre metastore Unity Catalog, ou un utilisateur disposant à la fois du privilège CREATE_CATALOG et de la propriété de l’objet fournisseur.

Remarque

Si le partage inclut des vues, vous devez utiliser un nom de catalogue différent du nom du catalogue qui contient l’affichage dans le metastore du fournisseur.

Explorateur de catalogues

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône CatalogueCatalogue.
  2. Dans le volet gauche, développez le menu Delta Sharing et sélectionnez Partagé avec moi.
  3. Sous l’onglet Fournisseurs, sélectionnez le fournisseur.
  4. Sous l’onglet Partages, recherchez le partage et cliquez sur Créer un catalogue sur la ligne de partage.
  5. Entrez un nom pour le catalogue et un commentaire facultatif.
  6. Cliquez sur Créer.

SQL

Exécutez la commande suivante dans un notebook ou dans l’éditeur de requête SQL Databricks.

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;

Cli

databricks catalogs create <catalog-name> /
--provider-name <provider-name> /
--share-name <share-name>

Le catalogue créé à partir d’un partage est de type Delta Sharing. Vous pouvez voir le type dans la page de détails du catalogue dans Catalog Explorer ou en exécutant la commande SQL DESCRIBE CATALOG dans un notebook ou une requête Databricks SQL. Tous les catalogues partagés sont répertoriés sous Catalog > Shared dans le volet gauche de Catalog Explorer.

Un catalogue de partage delta peut être géré de la même façon que les catalogues réguliers sur un metastore de catalogue Unity. Vous pouvez voir, mettre à jour et supprimer un catalogue Delta Sharing en utilisant Catalog Explorer, l’interface CLI Databricks et les commandes SQL SHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOG et DROP CATALOG.

La structure d’espace de noms de niveau 3 sous un catalogue Delta Sharing créé à partir d’un partage est la même que celle d’un catalogue standard sur Unity Catalog : catalog.schema.table ou catalog.schema.volume.

Les données de table et de volume d’un catalogue partagé sont en lecture seule, ce qui signifie que vous pouvez effectuer des opérations de lecture telles que :

  • DESCRIBE, SHOW et SELECT pour les tables.
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>' et COPY INTO pour les volumes.

Les notebooks d’un catalogue partagé peuvent être prévisualisés et clonés par n’importe quel utilisateur avec USE CATALOG dans le catalogue.

Les modèles d’un catalogue partagé peuvent être lus et chargés pour l’inférence par n’importe quel utilisateur disposant des privilèges suivants : privilège EXECUTE sur le modèle inscrit, ainsi que les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.

Gérer les autorisations pour les schémas, tables et volumes dans un catalogue Delta Sharing

Par défaut, le créateur du catalogue est le propriétaire de tous les objets de données d’un catalogue Delta Sharing et peut gérer les autorisations de n’importe lequel d’entre eux.

Les privilèges sont hérités vers le bas, bien que certains espaces de travail puissent toujours être sur le modèle de sécurité hérité qui n’a pas fourni d’héritage. Consultez Modèle d’héritage. Tout utilisateur ayant reçu le privilège SELECT sur le catalogue a le privilège SELECT sur tous les schémas et tables du catalogue, sauf si ce privilège est révoqué. De même, tout utilisateur ayant reçu le privilège READ VOLUME sur le catalogue a le privilège READ VOLUME sur tous les volumes du catalogue, sauf si ce privilège est révoqué. Vous ne pouvez pas accorder de privilèges donnant un accès d’écriture ou de mise à jour sur un catalogue Delta Sharing ou sur des objets dans un catalogue Delta Sharing.

Le propriétaire du catalogue peut déléguer la propriété des objets de données à d’autres utilisateurs ou groupes, ce qui leur permet de gérer les autorisations et les cycles de vie des objets.

Pour plus d’informations sur la gestion des privilèges sur les objets de données en utilisant Unity Catalog, consultez Gérer les privilèges dans Unity Catalog.

Lire des données dans une table partagée

Vous pouvez lire des données dans une table partagée en utilisant un des outils disponibles pour vous en tant qu’utilisateur Azure Databricks : Catalog Explorer, notebooks, requêtes SQL, interface CLI Databricks et API REST Databricks. Vous devez disposer du privilège SELECT sur la table.

Lire des données dans un volume partagé

Vous pouvez lire des données dans un volume partagé en utilisant l’un des outils disponibles pour vous en tant qu’utilisateur Azure Databricks : Catalog Explorer, notebooks, requêtes SQL, interface CLI Databricks et API REST Databricks. Vous devez disposer du privilège READ VOLUME sur le volume.

Charger un modèle partagé pour l’inférence

Pour plus d’informations sur le chargement d’un modèle partagé et son utilisation pour l’inférence par lots, consultez Charger des modèles pour l’inférence.

Interroger les données d’historique d’une table

Si l’historique est partagé avec la table, vous pouvez interroger les données de la table à partir d’une version ou d’un horodatage. Nécessite Databricks Runtime 12.2 LTS ou version ultérieure.

Par exemple :

SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";

En outre, si le flux de changements de données (CDF, Change Data Feed) est activé avec la table, vous pouvez interroger le CDF. La version et l’horodatage sont pris en charge :

SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");

Pour plus d’informations sur le flux de changements de données, consultez Utiliser le flux de changements de données Delta Lake sur Azure Databricks.

Interroger une table à l’aide d’Apache Spark Structured Streaming

Si une table est partagée avec l’historique, vous pouvez l’utiliser comme source pour Spark Structured Streaming. Nécessite Databricks Runtime 12.2 LTS ou version ultérieure.

Options prises en charge :

  • ignoreDeletes : ignorer les transactions qui suppriment des données.
  • ignoreChanges : retraiter les mises à jour si les fichiers ont dû être réécrits dans la table source en raison d’une opération de modification des données telle que UPDATE, MERGE INTO, DELETE (dans les partitions) ou OVERWRITE. Des lignes inchangées peuvent toujours être émises. Par conséquent, vos consommateurs en aval doivent être en mesure de gérer les doublons. Les suppressions ne sont pas propagées en aval. ignoreChanges englobe ignoreDeletes. Par conséquent, si vous utilisez ignoreChanges, votre flux n’est pas interrompu par des suppressions ni des mises à jour de la table source.
  • startingVersion : version de table partagée à partir de laquelle démarrer. Toutes les modifications de table à partir de cette version (incluse) seront lues par la source de streaming.
  • startingTimestamp : Timestamp de départ. Toutes les modifications de table validées à partir de ce timestamp (inclus) seront lues par la source de streaming. Exemple : "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger : nombre de nouveaux fichiers à prendre en compte dans chaque micro-lot.
  • maxBytesPerTrigger : quantité de données traitées dans chaque micro-lot. Cette option définit une valeur « soft max », qui signifie qu’un lot traite approximativement cette quantité de données et peut traiter plus que la limite afin de faire avancer la requête de diffusion en continu dans les cas où la plus petite unité d’entrée est supérieure à cette limite.
  • readChangeFeed : diffuser en continu le flux de changements de données de la table partagée.

Options non prises en charge :

  • Trigger.availableNow

Exemples de requêtes Structured Streaming

Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")

Si le flux de changements de données (CDF) est activé avec la table, vous pouvez diffuser en continu le CDF.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

Lire des tables avec un mappage de colonnes ou des vecteurs de suppression activés

Important

Cette fonctionnalité est disponible en préversion publique.

Les vecteurs de suppression sont une fonctionnalité d’optimisation du stockage que votre fournisseur peut activer sur les tables Delta partagées. Consultez Que sont les vecteurs de suppression ?.

Azure Databricks prend également en charge le mappage de colonnes pour des tables Delta. Cf. Renommage et suppression des colonnes avec le mappage de colonnes Delta Lake.

Si votre fournisseur a partagé une table avec un mappage de colonnes ou des vecteurs de suppression activés, vous pouvez effectuer des lectures par lots sur la table à l’aide d’un entrepôt SQL ou d’un cluster exécutant Databricks Runtime 14.1 ou version ultérieure. Les requêtes CDF et de streaming nécessitent Databricks Runtime 14.2 ou version ultérieure.

Vous pouvez effectuer des requêtes par lots telles quelles, car elles peuvent résoudre automatiquement responseFormat en fonction des fonctionnalités de table de la table partagée.

Pour lire un flux des changements de données (CDF) ou pour effectuer des requêtes de streaming sur des tables partagées avec des vecteurs de suppression ou un mappage de colonnes activé, vous devez définir l’option supplémentaire responseFormat=delta.

Les exemples suivants montrent les requêtes batch, CDF et de streaming :

import org.apache.spark.sql.SparkSession

// Batch query
spark.read.format("deltaSharing").table(<tableName>)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .table(<tableName>)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)

Afficher les vues partagées

Important

Cette fonctionnalité est disponible en préversion publique.

Remarque

Le partage de vues est pris en charge uniquement dans le partage de Databricks à Databricks.

La lecture des vues partagées est identique à la lecture de tableaux partagés, à quelques exceptions près :

Exigences de calcul :

  • Si votre compte Azure Databricks est différent de celui du fournisseur, vous devez utiliser un entrepôt SQL serverless pour interroger les vues partagées.
  • Si le fournisseur se trouve sur le même compte Azure Databricks, vous pouvez utiliser n’importe quel entrepôt SQL et un cluster qui utilise le mode d’accès partagé.

Restrictions d’affichage :

Vous ne pouvez pas créer de vues qui référencent des vues partagées.

Afficher les restrictions de partage :

Vous ne pouvez pas partager des vues qui référencent des tables partagées ou des vues partagées.

Exigences concernant l’affectation des noms:

Le nom du catalogue que vous utilisez pour le catalogue partagé qui contient l’affichage ne peut pas être identique à n’importe quel catalogue fournisseur contenant un tableau référencée par la vue. Par exemple, si la vue partagée est contenue dans votre test catalogue et que l’une des tables du fournisseur référencées dans cette vue est contenue dans le catalogue du test fournisseur, la requête génère une erreur de conflit d’espace de noms. Consultez Créer un catalogue à partir d’un partage.

Historique et diffusion en continu :

Vous ne pouvez pas interroger l’historique ou utiliser une vue comme source de streaming.

JDBC/ODBC:

Les instructions de cet article se concentrent sur la lecture de données partagées à l’aide d’interfaces utilisateur Azure Databricks, en particulier la syntaxe et les interfaces Unity Catalog. Vous pouvez également interroger des vues partagées à l’aide d’Apache Spark, Python et d’outils décisionnels tels que Tableau et Power BI à l’aide de pilotes JDBC/ODBC Databricks. Pour savoir comment vous connecter à l’aide des pilotes JDBC/ODBC Databricks, consultez Pilotes ODBC et JDBC Databricks.

Lire des blocs-notes partagés

Pour afficher un aperçu et cloner des fichiers de notebook partagés, vous pouvez utiliser Catalog Explorer.

Autorisations requises : propriétaire ou utilisateur du catalogue disposant du privilège USE CATALOG sur le catalogue créé à partir du partage.

  1. Dans votre espace de travail Azure Databricks, cliquez sur l'icône CatalogueCatalogue.

  2. Dans le volet gauche, développez le menu Catalogue, recherchez et sélectionnez le catalogue créé à partir du partage.

  3. Sous l’onglet Autres ressources, vous verrez tous les fichiers de bloc-notes partagés.

  4. Cliquez sur le nom d’un fichier de bloc-notes partagé pour afficher un aperçu.

  5. (Facultatif) Cliquez sur le bouton Cloner pour importer le fichier de notebook partagé dans votre espace de travail.

    1. Dans la boîte de dialogue Cloner sur, entrez éventuellement un Nouveau nom, puis sélectionnez le dossier de l’espace de travail dans lequel vous souhaitez cloner le fichier de notebook.
    2. Cliquez sur Cloner.
    3. Une fois le notebook cloné, une boîte de dialogue s’affiche pour vous informer qu’il a été cloné. Cliquez sur Révéler dans l’éditeur de notebook dans la boîte de dialogue pour l’afficher dans l’éditeur de notebook.

    Consultez Présentation des notebooks Databricks.