Partager via


Qu’est-ce qu’Apache Iceberg dans Azure Databricks ?

Importante

Les tables Apache Iceberg gérées par le catalogue Unity sont disponibles en préversion publique dans Databricks Runtime 16.4 LTS et versions ultérieures. Les tables Iceberg étrangères sont également disponibles en préversion publique dans Databricks Runtime 16.4 LTS et versions supérieures à celle-ci.

Apache Iceberg est un format de table open source pour les charges de travail d’analytique. Il prend en charge des fonctionnalités telles que l’évolution du schéma, le voyage temporel et le partitionnement masqué. Comme Delta Lake, Iceberg fournit une couche d’abstraction qui active les transactions ACID sur les données stockées dans le stockage d’objets. Azure Databricks prend en charge les tables Iceberg qui utilisent le format de fichier Apache Parquet. Iceberg maintient l’atomicité et la cohérence en écrivant de nouveaux fichiers de métadonnées pour chaque modification de table.

Un catalogue Iceberg est la couche de plus haut niveau de l’architecture de table Iceberg. Il gère les opérations telles que la création, la suppression et le renommage des tables. Sa principale responsabilité est de fournir les métadonnées actuelles lorsqu’une table est chargée. Azure Databricks prend en charge les tables Iceberg gérées par :

Toutes les tables Iceberg dans Azure Databricks suivent la spécification ouverte du format de table Iceberg. Consultez la spécification de la table Iceberg.

Créer des tables Iceberg dans le catalogue Unity

Les tables iceberg créées dans le catalogue Unity sont des tables Iceberg gérées. Vous pouvez créer ces tables à l’aide des éléments suivants :

Les tables Iceberg managées sont entièrement intégrées aux fonctionnalités de la plateforme Azure Databricks. Unity Catalog gère les tâches de cycle de vie telles que l’expiration des instantanés et le compactage de fichiers sur ces tables. Les tables Iceberg managées prennent également en charge le clustering liquide, ce qui améliore les performances des requêtes. L’optimisation prédictive automatise ces tâches pour réduire les coûts de stockage et améliorer la vitesse des requêtes.

Lire les tables Iceberg gérées par d’autres catalogues

Une table iceberg étrangère est une table Iceberg gérée par un catalogue en dehors de l'Unity Catalog. Le catalogue externe stocke les métadonnées actuelles de la table. Azure Databricks utilise Lakehouse Federation pour récupérer les métadonnées et lire la table à partir du stockage d’objets.

Les tables Iceberg étrangères sont en lecture seule dans Azure Databricks et ne sont prises en charge que de manière limitée par la plateforme.

Accéder aux tables Iceberg à l’aide de systèmes externes

Vous pouvez accéder à toutes les tables Iceberg dans le catalogue Unity à l’aide de l’API du catalogue REST Iceberg. Cette API ouverte prend en charge les opérations de lecture et d’écriture à partir de moteurs Iceberg externes sur différents langages et plateformes. Consultez Accéder aux tables Azure Databricks des clients Apache Iceberg.

Le catalogue REST prend en charge la distribution d'informations d'identification, ce qui délivre des informations d'identification temporaires aux moteurs externes pour accéder au stockage sous-jacent. Pour en savoir plus, veuillez consulter la section Distribution d'informations d'identification Unity Catalog pour l'accès aux systèmes externes.

Limites des tables Iceberg

Les limitations suivantes s’appliquent aux tables Iceberg dans Azure Databricks et sont susceptibles de changer :

  • Les tables Iceberg prennent uniquement en charge le format de fichier Apache Parquet.
  • Azure Databricks prend en charge les versions 1 et 2 de la spécification Apache Iceberg, avec les exceptions suivantes :
    • Les suppressions au niveau des lignes, y compris les suppressions de position et les suppressions basées sur l’égalité, ne sont pas prises en charge.
    • La création de branches et l’ajout de balises ne sont pas pris en charge. Seule la branche principale est accessible lors de la lecture des tables Iceberg étrangères.
    • L'évolution des partitions est prise en charge sur les tables Iceberg gérées uniquement en interaction avec des moteurs Iceberg externes. Les tables Iceberg étrangères ne prennent pas en charge l’évolution des partitions.
    • Les types de données suivants ne sont pas pris en charge :
      • UUID
      • Fixed(L)
      • TIME
  • Les tables Iceberg managées ne prennent pas en charge les contraintes de clé primaire ou de clé étrangère.

Limitations de la table Iceberg managée

Les limitations suivantes s’appliquent spécifiquement aux tables Iceberg gérées :

  • La recherche vectorielle n’est pas prise en charge sur les tables Iceberg gérées.
  • Apache Iceberg ne prend pas en charge le flux de données modifiées. Par conséquent, le traitement incrémentiel n’est pas pris en charge lors de la lecture des tables Managed Iceberg comme source pour :
    • Vues matérialisées et tables de diffusion en continu
    • Lakehouse Monitoring
    • Tables en ligne
    • Lakebase
    • Classification des données

Limites des tables Iceberg étrangères

Les limitations suivantes s’appliquent spécifiquement aux tables Iceberg étrangères :

  • Les déplacements temporels sont pris en charge uniquement pour les instantanés Iceberg qui ont été lus précédemment dans Azure Databricks (autrement dit, les instantanés où une SELECT instruction a été exécutée).
  • L’utilisation de fonctions de transformation de compartiment pour le partitionnement Iceberg peut dégrader les performances des requêtes lorsque des filtres conditionnels sont utilisés.
  • Les produits de hiérarchisation de stockage cloud tels qu’Amazon S3 ne sont pas intégrés aux tables Iceberg étrangères. L’accès aux tables Iceberg étrangères dans Azure Databricks peut restaurer les données archivées dans des niveaux de stockage à moindre coût.
  • Sur les clusters en mode d’accès dédié, les lectures et les opérations REFRESH FOREIGN TABLE sur les tables Iceberg nécessitent ALL PRIVILEGES.