Accès externe aux vues
Bêta
L'accès externe aux vues via le catalogue REST Iceberg est en bêta. L'accès aux vues via l'API REST Unity est disponible avec la version v2.
Les moteurs externes peuvent interroger les vues Unity Catalog en utilisant les APIs suivantes :
- API REST Unity pour les vues sur les tables Delta Lake.
- Catalogue REST Iceberg pour les vues sur les tables compatibles Iceberg.
Le moteur externe exécute le SQL de la vue et lit les tables sous-jacentes. Le lecteur doit avoir accès à la vue ainsi qu’à chaque vue ou table référencée.
Configuration requise
- Activez l' accès aux données externes pour le métastore. Voir Activer l'accès aux données externes à Unity Catalog.
- Accordez
USE CATALOGetUSE SCHEMAsur les catalogues et schémas parents,SELECTsur la vue et chaque vue ou table référencée, etEXTERNAL USE SCHEMAsur les schémas contenant ces tables. - Authentifiez-vous avec un jeton d’accès personnel ou un jeton OAuth Databricks.
- Utilisez une vue SQL compatible avec le moteur externe.
query des vues à partir d'Apache Spark
Versions minimales pour les exemples Spark :
- Apache Spark 4.0.
- Pour les vues Delta : connecteur Spark Unity Catalog 0.6.0 et Delta Lake 4.3.0.
- Pour les vues Iceberg : Apache Iceberg 1.10.0.
Utilisez les noms de catalogue Unity Catalog en tant que noms de catalogue Spark, y compris pour les catalogues référencés par la vue.
Vues sur les tables Delta
L’exemple suivant utilise l’API REST Unity sur AWS. Remplacer :
<catalog>avec le catalogue Unity Catalog contenant la vue.<workspace-hostname>avec le Hostname de votre Databricks workspace.<token>avec votre jeton d'accès.
spark.jars.packages io.unitycatalog:unitycatalog-spark_4.0_2.13:0.6.0,io.delta:delta-spark_4.0_2.13:4.3.0,org.apache.hadoop:hadoop-aws:3.4.1
spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
spark.sql.catalog.<catalog> io.unitycatalog.spark.UCSingleCatalog
spark.sql.catalog.<catalog>.uri https://<workspace-hostname>
spark.sql.catalog.<catalog>.token <token>
spark.sql.defaultCatalog <catalog>
spark.hadoop.fs.s3.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
Pour query la vue, remplacez <catalog>, <schema> et <view> par les noms de votre catalogue, schéma et vue, puis exécutez le SQL suivant dans Spark :
SELECT * FROM <catalog>.<schema>.<view>;
Vues sur les tables Iceberg
L’exemple suivant utilise le catalogue REST Iceberg sur AWS. Remplacer :
<catalog>avec le catalogue Unity Catalog contenant la vue.<workspace-hostname>avec le Hostname de votre Databricks workspace.<token>avec votre jeton d'accès.
spark.jars.packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0
spark.sql.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark.sql.catalog.<catalog> org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.<catalog>.type rest
spark.sql.catalog.<catalog>.uri https://<workspace-hostname>/api/2.1/unity-catalog/iceberg-rest
spark.sql.catalog.<catalog>.warehouse <catalog>
spark.sql.catalog.<catalog>.token <token>
spark.sql.catalog.<catalog>.io-impl org.apache.iceberg.aws.s3.S3FileIO
spark.sql.catalog.<catalog>.header.X-Iceberg-Access-Delegation vended-credentials
spark.sql.defaultCatalog <catalog>
Pour query la vue, remplacez <catalog>, <schema> et <view> par les noms de votre catalogue, schéma et vue, puis exécutez le SQL suivant dans Spark :
SELECT * FROM <catalog>.<schema>.<view>;
Limitations
- La création et la modification de vues à partir d'un compute externe ne sont pas prises en charge.
- Le moteur externe doit prendre en charge les définitions de vue dans le dialecte Spark SQL. Les query qui référencent la vue utilisent le dialecte SQL du moteur externe.
Pour l'accès Iceberg REST catalog :
- Les vues avec des politiques de contrôle d'accès précises, des chemins de résolution personnalisés ou des fonctions définies par l'utilisateur ne sont pas prises en charge.
- Les versions historiques de vue ne sont pas prises en charge.
- Spark utilise les paramètres SQL du lecteur. Les résultats ou les erreurs peuvent différer de Databricks Runtime.