Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est disponible en préversion publique.
Si vous avez activé l’accès aux données externes au catalogue Unity, vous pouvez également ajouter un accès aux données externes à vos jeux de données de pipeline. Cela permet aux clients Delta et Iceberg externes d’accéder à vos jeux de données via les API REST catalogue Unity et Iceberg, sans nécessiter de copie complète des données.
L’accès aux données externes pour les jeux de données de pipeline fonctionne pour les pipelines Lakeflow.
Capacités
L’utilisation de l’accès aux données externes pour les jeux de données de pipeline expose les mêmes données disponibles dans Azure Databricks, sans créer de doublon des données. Cela donne les caractéristiques suivantes pour les performances et les fonctionnalités :
- Aucune copie de données n’est requise : L’accès externe est activé sans dupliquer le jeu de données complet.
- Accès externe via des API : Lisez les vues matérialisées et les tables de diffusion en continu à l’aide des API Delta Lake ou Iceberg.
- Cohérence de lecture après écriture: Les lecteurs externes peuvent accéder à des données à jour après une mise à jour de l’ensemble de données, garantissant l’absence de données obsolètes. Les mises à jour sont disponibles immédiatement lors de l’actualisation.
- Objet table unique : Les jeux de données apparaissent en externe sous forme de tables gérées portant le même nom que le jeu de données source dans les API du catalogue Unity.
- Coût faible : Étant donné que le jeu de données complet n’est pas copié, la surcharge pour fournir un accès externe est faible.
Requirements
Les conditions requises pour vos jeux de données sont les suivantes :
- L’accès externe doit être activé pour le schéma : Votre espace de travail doit être inscrit à la préversion publique de l’accès externe aux données pour les jeux de données de pipeline, et cette fonctionnalité doit être activée pour le schéma contenant vos jeux de données. Consultez pour activer l’accès aux données externes dans Unity Catalog.
- Catalogue Unity : Vos tables de diffusion en continu et vues matérialisées doivent utiliser le catalogue Unity.
- Version de Databricks Runtime : Vous devez utiliser Databricks Runtime 17.3 et versions ultérieures.
Les conditions requises pour vos clients sont les suivantes :
- Version de l’API Delta : Le client doit prendre en charge les API Delta Lake 4.0.0 ou ultérieures, y compris les vecteurs de suppression, et doit utiliser les API du catalogue Unity pour l’accès.
- Version de l’API Iceberg : Le client peut également accéder à l’aide des API du catalogue Iceberg qui prennent en charge la spécification Iceberg v3.
-
Privilèges Unity Catalog : le principal qui lit les jeux de données de manière externe doit disposer du privilège EXTERNAL USE SCHEMA sur le schéma et du privilège
SELECTsur la table.
Note
Si votre client ne prend pas en charge ces exigences, vous pouvez également utiliser le mode de compatibilité, qui prend en charge tous les clients Delta et Iceberg, mais nécessite la création d’une copie complète du jeu de données.
Comment activer l’accès pour un jeu de données
Il existe trois étapes pour activer l’accès externe pour un jeu de données.
Dans votre définition de jeu de données, ajoutez les éléments suivants
TBLPROPERTIES. Cela n’est nécessaire que pour les lecteurs Iceberg v3. Si vous avez uniquement des lecteurs Delta, vous pouvez ignorer cette étape.Propriété Utilisation 'delta.columnMapping.mode' = 'name'Le mappage de colonnes est requis pour Iceberg. 'delta.universalFormat.enabledFormats' = 'iceberg'Activez UniForm pour Iceberg. 'delta.enableIcebergCompatV3' = 'true'Utilisez Iceberg V3 pour UniForm. 'delta.enableChangeDataFeed' = 'false'Le flux de données modifiées n’est pas compatible avec l’accès externe. Cela doit donc être false.Par exemple, vous pouvez mettre à jour la définition d’une vue matérialisée dans les pipelines Lakeflow en ajoutant ce qui suit
TBLPROPERTIESà votre requête :CREATE OR REFRESH MATERIALIZED VIEW view_name TBLPROPERTIES( ... 'delta.columnMapping.mode' = 'name', 'delta.enableIcebergCompatV3' = 'true', 'delta.universalFormat.enabledFormats' = 'iceberg', 'delta.enableChangeDataFeed' = 'false') ...Pour afficher les propriétés de votre jeu de données, vous pouvez utiliser l’instruction
DESCRIBE EXTENDEDSQL.Appliquez les propriétés Iceberg au pipeline. Cela n’est nécessaire que pour les lecteurs Iceberg v3. Si vous avez uniquement des lecteurs Delta, vous pouvez ignorer cette étape.
- Pipelines déclenchés : exécutez le pipeline une seule fois.
- Pipelines en continu: Arrêtez et redémarrez le pipeline.
Dans votre configuration de pipeline, définissez
pipelines.externalMetadata.enabledsurtrue.Interface utilisateur des paramètres de pipeline
- Ouvrez votre pipeline, puis cliquez sur Paramètres.
- Sous Configuration, ajoutez une paire clé-valeur : Clé
pipelines.externalMetadata.enabled, Valeurtrue. - Cliquez sur Enregistrer.
Configuration JSON du pipeline
Dans la
configurationsection de votre pipeline JSON, ajoutez :{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Après avoir enregistré la configuration, exécutez ou redémarrez le pipeline pour appliquer les modifications :
- Pipelines déclenchés : exécutez le pipeline une seule fois.
- Pipelines en continu: Arrêtez et redémarrez le pipeline.
Lecture de données à partir de clients externes
Les sections suivantes décrivent comment lire votre jeu de données à partir de différents clients et environnements.
Utiliser l’API REST Unity avec le lecteur Delta Spark
Utilisez Apache Spark™ version 4.0 ou ultérieure. Vous pouvez télécharger à partir de https://spark.apache.org/downloads.html.
En fonction de votre fournisseur de cloud, exécutez la commande suivante pour démarrer un interpréteur de commandes Spark SQL avec Delta 4.0 et le catalogue Unity.
AWS
bin/spark-sql \ --packages org.apache.spark:spark-hadoop-cloud_2.13:4.0.0,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Azure
bin/spark-sql \ --packages org.apache.hadoop:hadoop-azure:3.3.6,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>GCP
bin/spark-sql \ --packages io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem \ --conf spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>À partir de l’interpréteur de commandes SQL, vous pouvez désormais accéder à votre jeu de données avec Spark SQL. Par exemple:
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Utiliser le lecteur Snowflake Iceberg
Dans Snowflake, vous pouvez utiliser le lecteur Iceberg. Cela nécessite la prise en charge d’Iceberg v3 dans Snowflake.
Configurez le catalogue REST Iceberg dans Apache Spark.
bin/spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-aws-bundle:1.8.0 \ --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \ --conf spark.sql.catalog.<uc-catalog-name>=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.type=rest \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.catalog.<uc-catalog-name>.warehouse=<uc-catalog-name>Configurez le catalogue REST Iceberg dans Snowflake.
CREATE OR REPLACE CATALOG INTEGRATION my_uc_int CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG CATALOG_NAMESPACE = '<uc-schema-name>' REST_CONFIG = ( CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<uc-catalog-name>' ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS ) REST_AUTHENTICATION = ( TYPE = BEARER BEARER_TOKEN = '<PAT>' ) ENABLED = TRUE; CREATE OR REPLACE ICEBERG TABLE my_table CATALOG = 'my_uc_int' CATALOG_TABLE_NAME = '<uc-table-name>';Accédez à votre jeu de données à partir de Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Utiliser le catalogue REST Iceberg avec le lecteur Spark Iceberg
Utilisez Apache Spark™ version 4.0 ou ultérieure. Vous pouvez télécharger à partir de https://spark.apache.org/downloads.html.
Dans AWS, exécutez la commande suivante pour démarrer un interpréteur de commandes Spark SQL avec Iceberg v3.
bin/spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0 \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.<uc-catalog-name>=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.io-impl=org.apache.iceberg.aws.s3.S3FileIO \ --conf spark.sql.catalog.<uc-catalog-name>.type=rest \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url>/api/2.1/unity-catalog/iceberg-rest \ --conf spark.sql.catalog.<uc-catalog-name>.token='<PAT>' \ --conf spark.sql.catalog.<uc-catalog-name>.warehouse=<uc-catalog-name> \ --conf spark.sql.iceberg.vectorization.enabled=falseAccédez à votre jeu de données à partir de Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Migrer à partir du mode de compatibilité
Si vous partagez actuellement un jeu de données à l’aide du mode de compatibilité, vous pouvez migrer vers l’utilisation de l’accès aux données externes.
- Activez cette fonctionnalité en suivant les étapes décrites dans Comment activer l’accès pour un jeu de données.
- Désactivez le mode de compatibilité. Voir Désactiver le mode de compatibilité
Limitations
Voici les limitations connues avec l’accès aux données externes pour les tables de streaming et les vues matérialisées.
- Écritures externes : Les écritures externes dans les jeux de données de pipeline ne sont pas prises en charge.
- Accès par chemin : Les lecteurs externes qui nécessitent un accès par chemin (lecture directe depuis un emplacement de stockage au lieu de l’interface de l’API UC) ne sont pas pris en charge. Pour prendre en charge l’accès basé sur le chemin, vous pouvez utiliser le mode de compatibilité, qui prend en charge l’accès basé sur le chemin, mais nécessite une copie complète du jeu de données.
- Fonctionnalités de sécurité : La prise en charge de la sécurité au niveau des lignes ou du masquage au niveau des colonnes à partir de lectures externes n’est pas prise en charge.
- Voyage temporel ou CDF : La prise en charge des déplacements temporels ou du flux de données de modification (CDF) via cette fonctionnalité n’est pas prise en charge. Le CDF doit être désactivé lorsque UniForm Iceberg est activé.
- Validations de catalogue (bêta) :les validations de catalogue ne sont pas compatibles avec l’accès aux données externes. Pour utiliser l’accès aux données externes sur une table de streaming, vous devez d’abord désactiver les commits du catalogue. Les commits de catalogue ne sont pas disponibles pour les vues matérialisées.
- Pipelines d’ingestion : Les tables de diffusion en continu créées avec Lakeflow Connect ne prennent pas en charge l’activation des propriétés de table Iceberg et sont uniquement disponibles avec les lecteurs Delta.
- Fabric: La lecture depuis Microsoft Fabric n’est pas prise en charge.
- Lecteur Snowflake Iceberg : Vous devez utiliser le lecteur Iceberg v3 dans Snowflake pour lire les jeux de données de pipeline.
- VMV autonomes et ST : Cette fonctionnalité est prise en charge uniquement pour les vues matérialisées et les tables de diffusion en continu gérées par un pipeline. Les vues matérialisées autonomes et les tables de diffusion en continu ne sont pas prises en charge. Contactez l’équipe Databricks chargée de votre compte si vous avez besoin d’un accès externe pour les vues matérialisées autonomes et les tables de streaming.