Scroll Top

Delta Share : la solution de partage de données dans Databricks

Samy ABTOUT, Data Engineer

Introduction

À l’ère de la révolution numérique, la quantité de données que nous générons, collectons et stockons augmente de manière significative et la diversité des sources de données ne cesse de croître. De plus, ces données sont progressivement perçues par les entreprises comme des actifs stratégiques. Elles peuvent être partagées en interne, mais également commercialisées par les sociétés en BtoB.

Le défi est donc de taille, à savoir comment gérer et partager de grandes quantités de données hétérogènes de manière simple, efficiente et sécurisée ?

C’est dans ce contexte que le concept de Data Sharing prend tout son sens : un principe de partage des données entre différentes parties (individus, intra-entreprise ou inter-entreprises). C’est un concept générique qui peut être mis en place de différentes manières en fonction des technologies utilisées.

Dans cet article, nous nous focaliserons sur le concept de Data Sharing proposé par Databricks, nommé Delta Sharing.

Présentation du concept Delta Sharing

Le Delta Sharing est une technologie de partage de données sécurisée qui a été introduite par Databricks en novembre 2020. Elle repose sur le protocole Open source Delta Lake, qui apporte des fonctionnalités de gestion de transactions ACID (Atomicité, Cohérence, Isolation, Durabilité) aux données de fichiers.

Le Delta Sharing permet de partager des données en lecture seule au format Delta à des utilisateurs internes ou externes à votre entreprise. Ce partage est indépendant des plateformes informatiques utilisées par les consommateurs des données. Les données partagées peuvent être une table Delta entière ou une partition. Les notebooks Databricks peuvent également être partagés si le consommateur de la donnée utilise également Databricks.

On distingue trois types de protocoles Delta Sharing qui permettent de couvrir l’ensemble des cas d’utilisation que l’on peut rencontrer lors d’un partage de données :

  • Delta Sharing Databricks à Databricks
  • Protocole ouvert Delta Sharing avec l’utilisation de Databricks par le fournisseur de données
  • Protocole ouvert Delta Sharing sans l’utilisation Databricks par le fournisseur de données

Le pré-requis pour les deux premiers protocoles est l’activation d’une fonctionnalité de Databricks nommée Unity Catalog.

Figure 1 : Schéma du fonctionnement du protocole Delta Sharing avec Unity Catalog
1. Présentation d’Unity Catalog dans Databricks

Unity Catalog est une solution de gouvernance unifiée de données dans Azure Databricks. Elle fournit une gestion centralisée de contrôle d’accès, d’audit, de traçabilité et de découverte des données dans les espaces de travail Databricks.

Figure 2 : Schéma des fonctionnalités d’Unity Catalog
  • Découverte des données : Etiqueter et documenter les ressources de données, permettant une recherche des données facilitée aux utilisateurs
  • Contrôle d’accès : Unity Catalog offre un emplacement unique pour gérer les stratégies d’accès aux données qui s’appliquent à tous les espaces de travail. Les droits sont appliqués au niveau des catalogues, des bases de données (également appelées schémas), des tables et des vues.
  • Audit et traçabilité intégrés : Unity Catalog permet de monitorer l’accès aux données grâce à la capture automatique des journaux d’audit utilisateurs.
  • Tables système (préversion publique) : Accéder aux données opérationnelles de votre compte, notamment les journaux d’audit, l’utilisation facturable et la traçabilité.

Unity Catalog est organisé comme suit :

Figure 3 : Schéma de la hiérarchie dans Unity Catalog
  • Metastore : conteneur de niveau supérieur pour les métadonnées. Un metastore contient un espace de noms à trois niveaux (catalog.schema.table) organisant les données. Il est unique par régions.
  • Catalogue : première couche de la hiérarchie d’objets, utilisée pour organiser vos ressources de données.
  • Schéma : c’est l’équivalent d’une base de données. Le schéma est la deuxième couche de la hiérarchie d’objets et contient des tables, des vues ou des volumes.
  • Volume : les volumes permettent le stockage de données non relationnelles.
  • Table et Vue : les tables et les vues permettent le stockage de données relationnelles.
2. Protocole Delta Sharing Databricks à Databricks

Le protocole Delta Sharing Databricks à Databricks est à privilégier si vous souhaitez partager des données stockées dans un espace de travail Databricks avec des utilisateurs disposant d’un autre espace de travail Databricks. Unity Catalog sera alors nécessaire pour le fournisseur et le consommateur de données. Le partage de données pourra ainsi se faire entre différents espaces de travail Databricks, indépendamment de leur Cloud Provider. Il sera possible de partager des tables Delta, des partitions ou des Notebooks.

L’avantage de cette solution est qu’il n’est pas nécessaire de créer des jetons d’authentification, la sécurité étant gérée exclusivement depuis Unity Catalog.

3. Protocole ouvert Delta Sharing

PROTOCOLE OUVERT DELTA SHARING AVEC DATABRICKS

Le protocole ouvert Delta Sharing en utilisant Databricks est à privilégier si vous souhaitez partager des données stockées dans un espace de travail Databricks avec des utilisateurs n’utilisant pas l’outil Databricks. Le fournisseur de données créera un jeton d’authentification permettant d’accéder aux données partagées depuis les outils suivants :

 

Figure 4 : Présentation de l’écosystème compatible avec le Delta Sharing

Protocole ouvert Delta Sharing sans Databricks

Le protocole ouvert Delta Sharing en utilisant Databricks est à privilégier si vous souhaitez partager des données qui ne sont pas stockées dans un espace de travail Databricks, par exemple dans un compte de stockage Azure. Il faudra alors provisionner une machine de calcul (Virtual machine par exemple) qui fera office de Delta Sharing Server.

Figure 5 : Schéma d’architecture du protocole ouvert Delta Sharing sans Databricks

Il est également nécessaire de créer un jeton d’authentification afin d’effectuer des requêtes via l’API REST et accéder aux données mises à disposition.

Voici un tableau récapitulant l’utilisation des trois fonctionnalités du Delta Share :

Le Delta Sharing permet, avec ses trois protocoles, de mettre à disposition des données de manière efficiente, sécurisée, sans avoir à la redonder l’information et ainsi d’optimiser la gestion des données d’entreprise. Cette fonctionnalité est le socle d’un paradigme récent d’architecture de données d’entreprise basée sur une approche distribuée et décentralisée de la gestion et du partage des données : Le Data mesh.

Le Data mesh : Paradigme de partage de données décentralisé

Le Data Mesh a été inventée en 2018 par Zhamak Dehghani, CEO et cofondatrice de Nextdata. C’est une nouvelle façon d’organiser les données qui vise à dépasser les limitations des concepts traditionnels, à savoir une approche centralisée des données où une équipe est censée gérer toutes les activités liées à la gestion de celles-ci.

Figure 6 : Illustration de la problématique de la vision centralisée de la donnée

 Le Data Mesh repose sur l’idée que les entreprises devraient traiter les données comme un produit, et propose une approche décentralisée en transférant la propriété des données (développement, maintenance et partage) aux producteurs de données (Data owners), qui sont les garants (Data steward) du domaine de données.

Ainsi les trois grands principes du Data Mesh sont :

  • La considération de la donnée comme un produit
  • La décomposition des produits en domaines de données : RH, Finance, etc…
  • Exploiter une approche self-service de la donnée

Le Data Mesh peut se décliner sous plusieurs types d’adoption :

  • Full Mesh Federation  : Chaque domaine de données a la totale responsabilité du partage de leurs données avec les autres domaines de données.
  • Hybrid Mesh Federation : Certains domaines de données ont la totale responsabilité du partage de leurs données, et d’autres distribuent leurs données par un Hub de données
  • Governed Mesh : Les domaines de données distribuent leurs données en passant par un Hub de données

 

Figure 7 : Schéma des différents type de Data Mesh

Nous venons de voir que le concept de Data Mesh s’appuie sur des fonctionnalités de partage de données comme le Delta Sharing. Rentrons désormais dans la mise en place et la configuration de celui-ci dans Databricks.

Mise en place et configuration du Delta Sharing dans Databricks

Delta Sharing : Databrick à Databricks

Nous allons voir comment mettre en place un Delta Sharing entre deux workspaces Databricks de régions différentes. Pour ce faire, nous allons partager deux tables Delta tmp_cities et tmp_contracts provenant d’un workspace situé en North Europe à un workspace situé en West Europe. Cette mécanique s’articule autour de trois notions fondamentales :

  • Share: C’est une collection d’objets (tables, vue ou Notebook) en lecture seule. Ce sont les entités que l’on souhaite partager aux destinataires
  • Recipient: C’est un objet sécurisable représentant le destinataire de la donnée
  • Provider: C’est l’entité qui partage la donnée

 

Son implémentation suit les étapes suivantes :

    1. Depuis la page d’accueil du workspace Databricks en région North Europe, cliquer sur l’onglet Catalog.

2. Une fois dans le catalogue, cliquer sur l’onglet Delta Sharing.

3. Cliquer sur le bouton Share data afin d’en créer un.

4. Nommer le Share et cliquer sur Create

5. Nous allons maintenant affecter les objets que nous souhaitons partager au Share précédemment créé. Pour cela, cliquer sur le bouton Manage assets puis choisir Edit assets.

6. Sélectionner les tables ou vues qu’on souhaite ajouter au Share. Dans l’exemple, nous choisissons les deux tables tmp_cities et tmp_contracts. Enfin, cliquer sur Save.

7. Les tables partagées sont désormais visibles dans le Share. Cliquer maintenant sur Add recipient afin de créer un recipient.

8. Nommer le Recipient et ajouter le Sharing identifier du workspace Databricks destinataire qui consommera la donnée. Cliquer sur Create pour finaliser la création.

NB : Pour récupérer cet identifier, il suffit de lancer la requête suivante dans le SQL Warehouse du workspace Databricks destinataire :

9. Le recipient est créé et visible avec son type d’authentification (Databricks à Databricks) et son statut.

10. La configuration est terminée dans le workspace Databricks fournisseur de données. Passons maintenant dans la partie Delta Sharing du workspace Databricks qui consommera la donnée (Répéter les étapes 1 et 2). Dans la partie Shared with me, un provider est visible. Cliquer dessus.

11. Dans le provider, l’ensemble des Share associés à lui sont visibles. Cliquer sur Create catalog pour le Share dont vous souhaitez consommer les données.

12. Nommer le catalogue et cliquer sur Create.

13. Les deux tables provenant du Workspace Databricks North Europe sont ainsi visibles et exploitables depuis le workspace Databricks West Europe.

Delta Sharing : Protocole ouvert en utilisant Databricks

Nous allons maintenant voir comment mettre en place un Delta Sharing avec protocole ouvert en utilisant Databricks. Nous utiliserons le Share crée précédemment composé des deux tables Delta tmp_cities et tmp_contracts et allons consommer la donnée depuis PowerBI en utilisant le Delta Sharing.

    1. Pour ce faire, nous commençons par créer un nouveau Recipient, qui n’aura cette fois-ci aucun Sharing Identifier renseigné.

2. Une fois le Recipient créé, une URL est générée afin de télécharger un fichier config.share. Cette URL est à usage unique.

Le fichier téléchargé est composé de deux informations nous permettant d’accéder au Share :

a. Un Endpoint, qui permet de se connecter au serveur Delta Sharing.

b. Un bearer token permettant l’authentification au serveur.

3. Depuis PowerBI, cliquer sur Obtenir les données et choisir le type de données Delta Sharing

4. Ajouter la valeur du Endpoint précisée dans le fichier config.share téléchargé précédemment.

5. Renseigner la valeur du bearer token situé également dans le fichier config.share

6. Les tables partagées sont disponibles à travers le Delta Sharing avec protocole ouvert

Conclusion

Le Delta Sharing permet la mise en place d’un système de partage de données simple, sécurisé et indépendant des plateformes informatiques consommatrices et du Cloud provider. Cette fonctionnalité permet d’être à la base de nouveaux concepts d’architecture de données décentralisées comme le Data Mesh et ouvre également la possibilité de commercialisation de la donnée.

Toutefois, certaines limitations existent dans l’utilisation du Delta Sharing. En effet, comme son nom l’indique, il n’est possible de partager que des fichiers au format Delta. De plus, les tables streaming et les vues matérialisées présentent dans Databricks ne peuvent actuellement pas être partagées.

La solution de partage de données fournie par Databricks répond néanmoins à la problématique du partage de données faite par exemple via des serveurs SFTP. Elle propose une mise à disposition en temps réel, sans réplication de données, facilement administrable et scalable.

Leave a comment

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.