Aller au contenu principal

Lire les données partagées à l'aide de la fédération Open ID Connect (OIDC) depuis un client Iceberg.

Cette page décrit comment les destinataires de données de fédération Open ID Connect (OIDC) peuvent utiliser un client Iceberg REST Catalog (IRC), tel que OSS Spark ou Snowflake, pour accéder aux partages OpenSharing créés dans Databricks.

Si vous utilisez des jetons de porteur pour gérer l'authentification à la place, consultez Créer un objet destinataire pour les utilisateurs non-Databricks à l'aide de jetons de porteur (Partage Databricks vers Open).

Cette page est destinée aux destinataires. Pour plus d'informations sur la façon dont les fournisseurs peuvent activer la fédération OIDC pour les destinataires dans Databricks, veuillez consulter Activer la fédération Open ID Connect (OIDC) pour les destinataires OpenSharing.

Obtenir votre profil Iceberg depuis le portail OIDC

  1. Accédez à l'URL du portail de profil OIDC que le fournisseur Databricks vous a communiquée.

    Demandez l'URL si vous ne l'avez pas encore reçue.

  2. Sur la page du portail, cliquez sur download file .

  3. Dans le fichier téléchargé, remplacez clientId, clientSecret et scope par vos valeurs.

  4. Importez le fichier de profil de partage avec votre code client.

Accéder aux données partagées

Vous pouvez accéder aux données à l'aide de n'importe quel catalogue REST Iceberg.

Snowflake

Dans votre feuille de calcul Snowflake, exécutez la commande suivante pour créer une intégration de catalogue. Vous pouvez également copier la commande SQL à partir du portail de profil OIDC que votre fournisseur a partagé avec vous.

Remplacez les valeurs des espaces réservés avant de l'exécuter :

  • <catalog-integration-name>: Un nom pour l'intégration de catalogue.
  • <catalog-uri>: L'Iceberg REST Catalog Endpoint de votre fichier de profil download.
  • <share-name>: Le nom du partage qui vous est accordé.
  • <oauth-token-uri>: Endpoint de jeton OAuth de votre IdP.
  • <oauth-client-id> et <oauth-client-secret>: vos identifiants OAuth.
  • <oauth-scope>: Votre champ d'application OAuth.
SQL
USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
CATALOG_URI = '<catalog-uri>'
WAREHOUSE = '<share-name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = '<oauth-token-uri>'
OAUTH_CLIENT_ID = '<oauth-client-id>'
OAUTH_CLIENT_SECRET = '<oauth-client-secret>'
OAUTH_ALLOWED_SCOPES = ('<oauth-scope>')
)
REFRESH_INTERVAL_SECONDS = 30
ENABLED = TRUE;

Créez une base de données liée qui utilise l'intégration du catalogue. Remplacez <database-name> par un nom pour la base de données.

SQL
CREATE DATABASE <database-name>
LINKED_CATALOG = (
CATALOG = <catalog-integration-name>
);

OSS Spark

L'exemple suivant lit des données partagées depuis un catalogue REST Iceberg à l'aide d'OSS Spark. Exécutez-le à partir d'une installation Spark qui inclut le runtime Iceberg Spark et les JAR du bundle AWS.

Remplacez les valeurs des espaces réservés avant de l'exécuter :

  • <spark-home>: Le chemin de votre installation Spark.
  • <iceberg-jars-path>: Le chemin d'accès à vos fichiers JAR Iceberg.
  • <catalog-uri>: L'Iceberg REST Catalog Endpoint de votre fichier de profil download.
  • <share-name>: Le nom du partage qui vous est accordé.
  • <oauth-token-uri>: Endpoint de jeton OAuth de votre IdP.
  • <oauth-client-id> et <oauth-client-secret>: vos identifiants OAuth.
  • <oauth-scope>: Votre champ d'application OAuth.
  • <spark-script>: Le chemin d'accès au script Scala à exécuter.
Bash
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH <spark-home>/bin/spark-shell \
--jars <iceberg-jars-path>/iceberg-spark-runtime-4.0_2.13-1.10.2.jar,<iceberg-jars-path>/iceberg-aws-bundle-1.10.2.jar \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.databricks=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.databricks.type=rest \
--conf spark.sql.catalog.databricks.uri=<catalog-uri> \
--conf spark.sql.catalog.databricks.warehouse=<share-name> \
--conf spark.sql.catalog.databricks.rest.auth.type=oauth2 \
--conf spark.sql.catalog.databricks.oauth2-server-uri=<oauth-token-uri> \
--conf spark.sql.catalog.databricks.credential=<oauth-client-id>:<oauth-client-secret> \
--conf spark.sql.catalog.databricks.scope=<oauth-scope> \
--conf spark.sql.catalog.databricks.io-impl=org.apache.iceberg.aws.s3.S3FileIO \
< <spark-script>