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 des 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 :
- 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).
- 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.
- 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
ouREAD VOLUME
). - 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é :
- 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
etUSE PROVIDER
pour votre metastore Unity Catalog, ou un utilisateur disposant à la fois des privilègesCREATE_CATALOG
et de la propriété de l’objet fournisseur. - Cet utilisateur ou un utilisateur avec les mêmes privilèges doit vous accorder l’accès à la table ou au volume partagé.
- 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
Dans votre espace de travail Azure Databricks, cliquez sur Catalogue pour ouvrir l’Explorateur de catalogue.
En haut du volet Catalogue, cliquez sur l’icône d’engrenage , puis sélectionnez Delta Sharing.
Vous pouvez également, dans la page Accès rapide, cliquer sur le bouton Delta Sharing >.
Sous l’onglet Éléments partagés avec moi, recherchez et sélectionnez le destinataire.
Sous l’onglet Partages, recherchez le partage et cliquez sur Créer un catalogue sur la ligne de partage.
Entrez un nom pour le catalogue et un commentaire facultatif.
Cliquez sur Créer.
Quand vous ouvrez Catalog Explorer, vous pouvez également cliquer sur Créer un catalogue en haut à droite pour créer un catalogue partagé. Consultez Créer des catalogues.
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>;
INTERFACE DE LIGNE DE COMMANDE
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
etSELECT
pour les tables.DESCRIBE VOLUME
,LIST <volume-path>
,SELECT * FROM <format>.'<volume_path>'
etCOPY 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 une version de modèles par alias pour les charges de travail d’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 queUPDATE
,MERGE INTO
,DELETE
(dans les partitions) ouOVERWRITE
. 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
englobeignoreDeletes
. Par conséquent, si vous utilisezignoreChanges
, 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.
La lecture des vues partagées est identique à la lecture de tableaux partagés, à quelques exceptions près :
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.
Afficher la prise en charge dans le partage ouvert :
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’Outils Apache Spark, Python et BI tels que Tableau et Power BI.
Coûts :
Il existe deux sources potentielles de coût pour le partage d’affichage :
- Coût de calcul, facturé par Databricks.
- Coût de stockage et de transfert réseau (sortie), facturé par le fournisseur de stockage.
Le coût de calcul est basé sur le type de ressource de calcul du destinataire :
Calcul du destinataire | Qui paie ? | Référence (SKU) |
---|---|---|
Databricks sans serveur | Recipient | Référence SKU serverless utilisée par le destinataire |
Databricks Classic | Recipient | Interactive Serverless |
Ouvrir des connecteurs de partage Delta | Fournisseur | Interactive Serverless |
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.
Dans votre espace de travail Azure Databricks, cliquez sur Catalogue.
Dans le volet gauche, développez le menu Catalogue, recherchez et sélectionnez le catalogue créé à partir du partage.
Sous l’onglet Autres ressources, vous verrez tous les fichiers de bloc-notes partagés.
Cliquez sur le nom d’un fichier de bloc-notes partagé pour afficher un aperçu.
(Facultatif) Cliquez sur le bouton Cloner pour importer le fichier de notebook partagé dans votre espace de travail.
- 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.
- Cliquez sur Cloner.
- 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.