Aller au contenu principal

Travailler avec des tables étrangères

Tables externes , parfois appelées tables fédérées , sont des tables enregistrées à l'aide d'Unity Catalog dans le cadre d'un catalogue externe. Les tables externes contiennent des données et des métadonnées gérées par des systèmes externes, Unity Catalog ajoutant la gouvernance des données pour query ces tables.

Databricks prend en charge les méthodes suivantes pour l'enregistrement des tables étrangères :

  • La fédération de requêtes utilise des connexions JDBC sécurisées pour se fédérer aux systèmes de données externes tels que PostgreSQL et MySQL.
  • La fédération de catalogues connecte des catalogues externes, tels que Hive metastore, AWS Glue ou Snowflake Horizon Catalog, pour query des données directement dans le stockage de fichiers.
important

Pour la compatibilité descendante avec les charges de travail Apache Spark et Databricks existantes, les tables externes dans un Hive metastore fédéré renvoient des métadonnées du Hive metastore, y compris si la table est une table gérée par Hive ou une table externe Hive.

Quand utiliser les tables étrangères

Les tables étrangères offrent de la flexibilité lors de l'intégration de Databricks avec des systèmes de données existants ou de la migration à partir de systèmes hérités.

De nombreuses tables externes constituent une solution temporaire pour un accès direct aux données non gérées par Databricks, sans nécessiter de migration de données ou de refactoring de code pour les workflows ETL en amont. Databricks recommande de migrer les datasets qui alimentent les charges de travail de production ou qui sont interrogés fréquemment vers des tables gérées par Unity Catalog. Les tables gérées offrent les meilleures performances et intègrent de nombreuses optimisations. Consultez Tables étrangères utilisant SQL.

La fédération de query est une solution complémentaire pour charger les données à partir de systèmes de données externes non pris en charge par Lakeflow Connect. Databricks recommande d'utiliser des vues matérialisées pour répliquer les tables étrangères vers Unity Catalog. Consultez Charger des données depuis des tables externes avec des vues matérialisées.

Créer ou écrire dans des tables étrangères

Si vous disposez de privilèges suffisants et que votre Workspace est configuré avec un Hive metastore fédéré interne, vous pouvez créer des tables externes ou y écrire des données qui sont prises en charge par ce Hive metastore fédéré interne. Le Hive metastore externe fédéré et toutes les tables externes accédées via Lakehouse Federation sont en lecture seule.

Bien que les tables externes soient en lecture seule, le champ Mis à jour par affiche l'utilisateur qui a déclenché le refresh le plus récent des métadonnées. Databricks effectue automatiquement le refresh des métadonnées des tables externes lors des queries lorsqu'il détecte que les métadonnées sont obsolètes. Par conséquent, le champ Mis à jour par affiche la session_user personne qui a exécuté la query, même si cet utilisateur n'a pas modifié les données sous-jacentes.

Databricks ne gère pas les métadonnées, les données ou la sémantique pour les écritures dans les tables étrangères. Les tables externes peuvent être supportées par un format conforme à ACID, tel que Delta Lake ou Apache Iceberg, mais elles n'offrent pas les garanties transactionnelles des tables gérées par Unity Catalog.

La plupart des optimisations Databricks pour les performances des requêtes, la vitesse d'écriture améliorée, l'élimination des données et les requêtes de métadonnées uniquement nécessitent Unity Catalog. Databricks recommande de comparer les performances des query en lecture et en écriture entre les tables étrangères et les tables gérées par Unity Catalog en utilisant la dernière version de Databricks Runtime pour évaluer les différences de latence et de coût. Voir tables gérées du Unity Catalog pour Delta Lake et Apache Iceberg.