Qu’est-ce que Lakehouse Federation ?
Cet article présente Lakehouse Federation, la plateforme de fédération de requêtes qui vous permet d’utiliser Azure Databricks pour exécuter des requêtes sur plusieurs sources de données externes. Il décrit également comment configurer des connexions Lakehouse Federation et créer des catalogues étrangers dans votre metastore Unity Catalog.
Qu’est-ce que Lakehouse Federation ?
Lakehouse Federation est la plateforme de fédération de requêtes pour Azure Databricks. Le terme fédération de requêtes décrit une collection de fonctionnalités qui permettent aux utilisateurs et aux systèmes d’exécuter des requêtes sur plusieurs sources de données sans devoir migrer toutes les données vers un système unifié.
Azure Databricks utilise Unity Catalog pour gérer la fédération des requêtes. Vous configurez des connexions en lecture seule à des solutions de base de données populaires à l’aide de pilotes inclus dans les clusters des entrepôts SQL pro et serverless et Databricks Runtime. Les outils de gouvernance et de traçabilité des données d’Unity Catalog garantissent que l’accès aux données est géré et audité pour toutes les requêtes fédérées effectuées par les utilisateurs de vos espaces de travail Azure Databricks.
Pourquoi utiliser Lakehouse Federation ?
Le lac de données met l’accent sur le stockage central des données afin de réduire la redondance et l’isolation des données. Votre organisation peut avoir de nombreux systèmes de données en production et vous pouvez vouloir interroger les données dans des systèmes connectés pour plusieurs raisons :
- Production de rapports ad hoc
- Travail de preuve de concept.
- Phase exploratoire des nouveaux pipelines ou rapports ETL.
- Prise en charge de charges de travail pendant une migration incrémentielle.
Dans chacun de ces scénarios, la fédération des requêtes vous permet d’obtenir des insights plus rapidement, car vous pouvez interroger les données en place et éviter un traitement ETL complexe et fastidieux.
Lakehouse Federation est destiné aux cas d’usage lorsque :
- Vous ne souhaitez pas ingérer de données dans Azure Databricks.
- Vous souhaitez que vos requêtes tirent parti du calcul dans le système de base de données externe.
- Vous souhaitez bénéficier des avantages de la gouvernance des données et des interfaces Unity Catalog, notamment le contrôle d’accès fragmenté, la traçabilité des données et la recherche.
Vue d’ensemble de la configuration de Lakehouse Federation
Pour rendre un jeu de données disponible pour l’interrogation en lecture seule à l’aide de Lakehouse Federation, vous créez les éléments suivants :
- Une connexion, un objet sécurisable dans Unity Catalog qui spécifie un chemin d’accès et des informations d’identification pour accéder à un système de base de données externe.
- Un catalogue étranger, un objet sécurisable dans Unity Catalog qui reflète une base de données dans un système de données externe, vous permettant d’effectuer des requêtes en lecture seule sur ce système de données dans votre espace de travail Azure Databricks, en gérant l’accès à l’aide d’Unity Catalog.
Sources de données prises en charge
Lakehouse Federation prend en charge les connexions aux types de base de données suivants :
- MySQL
- PostgreSQL
- Amazon Redshift
- Salesforce Data Cloud
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Data Warehouse)
- Google BigQuery
- Databricks
Exigences relatives aux connexions
Conditions requises pour l’espace de travail :
- Espace de travail activé pour Unity Catalog.
Voici les exigences de calcul à respecter :
- Connectivité réseau de votre cluster Databricks Runtime ou de votre entrepôt SQL aux systèmes de base de données cibles. Consultez l’article Recommandations de mise en réseau pour Lakehouse Federation.
- Les clusters Azure Databricks doivent utiliser Databricks Runtime 13.3 LTS (ou une version ultérieure) et le mode d’accès partagé ou mono-utilisateur.
- Les entrepôts SQL doivent être Pro ou Serverless et doivent utiliser la version 2023.40 ou ultérieure.
Autorisations requises :
- Pour créer une connexion, vous devez être un administrateur de metastore ou un utilisateur disposant du privilège
CREATE CONNECTION
sur le metastore Unity Catalog attaché à l’espace de travail. - Pour créer un catalogue étranger, vous devez disposer de l’autorisation
CREATE CATALOG
sur le metastore et être le propriétaire de la connexion ou disposer du privilègeCREATE FOREIGN CATALOG
sur la connexion.
Des exigences d’autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.
Créer une connexion
Une connexion spécifie un chemin d’accès et des informations d’identification pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser l’Explorateur de catalogues ou la commande SQL CREATE CONNECTION
dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks.
Remarque
Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer une connexion. Consultez POST /api/2.1/unity-catalog/connections et Commandes Unity Catalog.
Autorisations requises : administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION
.
Explorateur de catalogues
Dans votre espace de travail Azure Databricks, cliquez sur Catalogue.
En haut du volet Catalogue, cliquez sur l’icône Ajouter, puis sélectionnez Ajouter une connexion dans le menu.
Sinon, dans la page Accès rapide, cliquez sur le bouton Données externes >, accédez à l’onglet Connexions, puis cliquez sur Créer une connexion.
Entrez un nom de connexion convivial.
Sélectionnez le type de connexion (fournisseur de base de données, comme MySQL ou PostgreSQL).
Entrez les propriétés de connexion (telles que les informations d’hôte, le chemin et les informations d’identification d’accès).
Chaque type de connexion nécessite des informations de connexion différentes. Consultez l’article pour votre type de connexion, répertorié dans la table des matières à gauche.
(Facultatif) Cliquez sur Tester la connexion pour vérifier qu’elle fonctionne.
(Facultatif) Ajoutez un commentaire.
Cliquez sur Créer.
SQL
Exécutez la commande suivante dans un notebook ou dans l’Éditeur de requête SQL. Cet exemple concerne les connexions à une base de données PostgreSQL. Les options diffèrent selon le type de connexion. Consultez l’article pour votre type de connexion, répertorié dans la table des matières à gauche.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Nous vous recommandons d’utiliser des secrets Azure Databricks au lieu de chaînes de texte en clair pour les valeurs sensibles telles que les informations d’identification. Par exemple :
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Pour obtenir des informations sur la configuration des secrets, consultez l’article Gestion des secrets.
Pour obtenir des informations sur la gestion des connexions existantes, consultez Gérer les connexions pour Lakehouse Federation.
Créer un catalogue étranger
Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et Unity Catalog. Pour créer un catalogue étranger, vous utilisez une connexion à la source de données qui a déjà été définie.
Pour créer un catalogue étranger, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE FOREIGN CATALOG
dans un notebook Azure Databricks ou dans l’Éditeur de requête SQL.
Remarque
Vous pouvez également utiliser l’API Unity Catalog. Consultez la documentation de référence d’Azure Databricks.
Les métadonnées de catalogues étrangers sont synchronisées dans Unity Catalog sur chaque interaction avec le catalogue. Pour le mappage de type de données entre Unity Catalog et la source de données, consultez la section Mappages de types de données de la documentation de chaque source de données.
Autorisations requises : autorisation CREATE CATALOG
sur le metastore, et être propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG
sur la connexion.
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 Ajouter, puis sélectionnez Ajouter un catalogue dans le menu.
Sinon, dans la page Accès rapide, cliquez sur le bouton Catalogues, puis sur le bouton Créer un catalogue.
Suivez les instructions pour créer des catalogues étrangers dans Créer des catalogues.
SQL
Exécutez la commande SQL suivante dans un notebook ou dans l’Éditeur de requête SQL. Les éléments entre chevrons sont optionnels. Remplacez les valeurs d’espace réservé :
<catalog-name>
: nom du catalogue dans Azure Databricks.<connection-name>
: objet Connection qui spécifie la source de données, le chemin et les informations d’identification d’accès.<database-name>
: nom de la base de données que vous souhaitez refléter en tant que catalogue dans Azure Databricks. Non obligatoire pour MySQL, qui utilise un espace de noms à deux couches.<external-catalog-name>
: Databricks à Databricks uniquement, nom du catalogue dans l’espace de travail Databricks externe que vous reflétez. Voir Créer un catalogue étranger.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Pour plus d’informations sur la gestion et l’utilisation de catalogues étrangers, consultez Gérer et utiliser des catalogues étrangers.
Lakehouse Federation et vues matérialisées
Databricks recommande de charger des données externes à l’aide de Lakehouse Federation lorsque vous créez des vues matérialisées. Consultez Utiliser des vues matérialisées dans Databricks SQL.
Lorsque vous utilisez Lakehouse Federation, les utilisateurs peuvent référencer les données fédérées comme suit :
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
Afficher les requêtes fédérées générées par le système
Lakehouse Federation convertit les instructions Databricks SQL en instructions qui peuvent être envoyées vers la source de données fédérée. Pour afficher l’instruction SQL générée, cliquez sur le nœud d’analyse de source de données étranger dans l’affichage graphique de Profil de requête, ou exécutez l’instruction SQL EXPLAIN FORMATTED. Consultez la section Envois pris en charge de la documentation de chaque source de données pour la couverture.
Limites
- Les requêtes sont en lecture seule.
- La limitation des connexions est déterminée à l’aide de la limite de requêtes SQL simultanées dans Databricks. Il n’existe aucune limite par connexion entre les entrepôts. Consultez Mise en file d’attente et mise à l’échelle automatique pour les entrepôts SQL professionnels et classiques.
- Les tables et les schémas dont les noms ne sont pas valides dans Unity Catalog ne sont pas pris en charge et sont ignorés par Unity Catalog lors de la création d’un catalogue étranger. Consultez la liste des règles de nommage et des limitations dans Limitations.
- Les noms de table et de schéma sont convertis en minuscules dans Unity Catalog. Les recherches doivent également utiliser des noms en minuscules. Si des tables ou des schémas ont des noms en minuscules en double, une seule instance de table ou de schéma est importée dans le catalogue étranger.
- Pour chaque table source contenant une clé étrangère, Azure Databricks planifie une sous-requête dans le système distant pour renvoyer un sous-ensemble de données de cette table, puis renvoie le résultat à une tâche d’exécution Azure Databricks via un flux unique. Si le jeu de résultats est trop volumineux, l’exécuteur peut manquer de mémoire.
- Le mode d’accès mono-utilisateur n’est disponible que pour les utilisateurs qui possèdent la connexion.
- Lakehouse Federation ne peut pas fédérer des tables sources contenant une clé étrangère avec des identificateurs respectant la casse pour des connexions Azure Synapse ou Redshift.
Quotas de ressources
Azure Databricks applique des quotas de ressources sur tous les objets sécurisables Unity Catalog. Ces quotas sont répertoriés dans les limites de ressources. Les catalogues étrangers et tous les objets qu’ils contiennent sont inclus dans votre utilisation totale du quota.
Si vous prévoyez de dépasser ces limites de ressources, contactez l’équipe de votre compte Azure Databricks.
Vous pouvez surveiller l’utilisation de vos quotas à l’aide des API de quotas de ressources d’Unity Catalog. Consultez Surveiller l’utilisation de vos quotas de ressources Unity Catalog.
Ressources supplémentaires
- Requêtes fédérées (Lakehouse Federation) dans les informations de référence sur le langage SQL