Aller au contenu principal

Accéder aux tables Databricks à partir de clients Delta

Cette page explique comment utiliser l'API REST de Unity pour créer, lire et écrire dans des tables gérées et externes de Unity Catalog à partir de clients Delta externes. Pour obtenir la liste complète des intégrations prises en charge, consultez les intégrations Unity Catalog.

Créer, lire et écrire à l'aide de l'API REST Unity

info

Aperçu

La création et l'écriture dans des tables gérées par Unity Catalog à partir de clients Delta sont en aperçu public.

L'API REST Unity fournit aux clients externes un accès en création, lecture et écriture aux tables enregistrées dans Unity Catalog. Configurez l'accès en utilisant l'URL du Workspace comme Endpoint. Les types de tables suivants sont accessibles :

Type de table

Lire l'article

Écriture

Créer

Delta managé

Oui

Oui *

Oui *

Delta externe

Oui

Oui

Oui

Type de table

Lire l'article

Écriture

Créer

Delta managé

Oui

Oui *

Oui *

Delta externe

Oui

Oui

Oui

* Pris en charge pour les tables Delta gérées avec des commits de catalogue.

attention

Pour éviter les problèmes potentiels de corruption et de perte de données, Databricks vous recommande de ne pas modifier la même table Delta Lake stockée dans S3 à partir de clients d'écriture différents.

Clients pris en charge

Apache Spark est pris en charge pour la création, la lecture et l'écriture dans des tables Delta gérées et externes de Unity Catalog à l'aide de l'API REST Unity.

Les clients suivants sont pris en charge en version Beta. Contactez votre équipe de compte Databricks si vous souhaitez les utiliser :

  • Apache Flink
  • DuckDB
  • StreamNative
  • Starburst

Exigences

Databricks prend en charge l'accès à l'API REST Unity pour les tables dans le cadre de Unity Catalog. Vous devez avoir Unity Catalog activé dans votre workspace afin d'utiliser ces endpoints.

Vous devez également suivre les étapes de configuration suivantes pour configurer l'accès aux tables à partir des clients Delta à l'aide de l'API REST Unity :

Limitations

  • L'accès externe aux tables UniForm avec IcebergCompatV3 n'est pas pris en charge actuellement.
  • Les clients externes ne peuvent pas modifier les propriétés de table delta.* ou databricks.*, ajouter ou supprimer des fonctionnalités de table, renommer des colonnes, et ajouter ou supprimer des contraintes CHECK.
  • Les clients externes ne peuvent pas effectuer d'opérations de maintenance de table, telles que OPTIMIZE, VACUUM et ANALYZE, sur les tables Delta gérées.
  • Les clients externes ne peuvent pas créer de tables avec des colonnes générées, des colonnes default ou des colonnes de contrainte.
  • Lors de la création de tables externes, Databricks recommande d'utiliser Apache Spark pour s'assurer que les définitions de colonnes sont dans un format compatible avec Apache Spark. L'API ne valide pas l'exactitude de la spécification des colonnes. Si la spécification n’est pas compatible avec Apache Spark, Databricks Runtime pourrait ne pas être en mesure de lire les tables.
remarque

Pour lire les tables avec des filtres de lignes ou des masques de colonnes attachés à partir d'un client Delta externe, voir Contrôles d'accès basés sur les attributs (ABAC) inter-moteurs pour les versions et la configuration client requises.

Accéder aux tables Delta avec Apache Spark à l'aide de l'authentification PAT

L'authentification PAT pour les clients Spark externes nécessite :

  • Unity Catalog Spark client version 0.5.0 ou supérieure (io.unitycatalog:unitycatalog-spark)
  • Apache Spark 4,0 ou 4,1
  • Delta Spark 4.3.0 ou version ultérieure
  • Un jeton d'accès personnel pour le principal accédant à Unity Catalog. Consultez Autoriser l'accès aux ressources Databricks.

La configuration suivante est requise pour lire ou écrire dans des tables Delta gérées et externes Unity Catalog avec Apache Spark en utilisant l'authentification PAT :

"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"spark.jars.packages": "io.delta:delta-spark_4.1_2.13:4.3.0,io.unitycatalog:unitycatalog-spark_4.1_2.13:0.5.0,org.apache.hadoop:hadoop-aws:3.4.2"

Substituez les variables suivantes :

  • <uc-catalog-name>: le nom du catalogue dans Unity Catalog qui contient vos tables.

  • <token>: Jeton d'accès personnel (PAT) pour le principal configurant l'intégration.

  • <workspace-url>: l'URL du workspace Databricks. Par exemple, cust-success.cloud.databricks.com.

remarque

Les versions des packages affichées ci-dessus sont à jour depuis la dernière mise à jour de cette page. Des versions plus récentes pourraient être disponibles. Vérifiez que les versions des packages sont compatibles avec votre version de Spark.

Pour plus de détails sur la configuration d'Apache Spark pour le stockage d'objets cloud, consultez la documentation Unity Catalog OSS.

important

Databricks Runtime 16.4 et supérieur est requis pour lire, écrire ou créer des tables avec des commits de catalogue activés. Databricks Runtime 18,0 ou version ultérieure est requis pour activer ou désactiver les commits de catalogue sur les tables existantes.

Pour créer des tables Delta gérées avec des commits de catalogue, utilisez le SQL suivant :

SQL
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;

Pour créer des tables Delta externes, utilisez le SQL suivant :

SQL
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;

Accéder aux tables Delta avec Apache Spark en utilisant l'authentification OAuth

Databricks prend également en charge l'authentification OAuth machine à machine (M2M). OAuth gère automatiquement le renouvellement des jetons et des identifiants pour l'authentification Unity Catalog.

L'authentification OAuth pour les clients Spark externes nécessite :

La configuration suivante est requise pour créer, lire ou écrire dans des tables gérées par Unity Catalog et des tables Delta externes avec Apache Spark à l’aide de l’authentification OAuth :

"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"spark.jars.packages": "io.delta:delta-spark_4.1_2.13:4.3.0,io.unitycatalog:unitycatalog-spark_4.1_2.13:0.5.0,org.apache.hadoop:hadoop-aws:3.4.2"

Substituez les variables suivantes :

remarque

Les versions des packages affichées ci-dessus sont à jour depuis la dernière mise à jour de cette page. Des versions plus récentes pourraient être disponibles. Vérifiez que les versions des packages sont compatibles avec votre version de Spark.