Aller au contenu principal

Lire les partages OpenSharing à partir d'un client Iceberg à l'aide de la fédération Open ID Connect (OIDC)

Les destinataires de données de fédération Open ID Connect (OIDC) peuvent utiliser un client Iceberg REST Catalog (IRC), tel qu'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.

download Iceberg profile pour les connecteurs OAuth

  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, sélectionnez le partage auquel vous souhaitez accéder dans le menu déroulant.

  3. Cliquez sur download file .

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

  5. Utilisez le nom de partage sélectionné comme warehouse dans votre configuration.

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

Accéder aux données partagées

Accédez aux données en utilisant n’importe quel Iceberg REST Catalog.

Snowflake

Dans votre fiche Snowflake, exécutez la commande suivante pour créer une intégration de catalogue. Vous pouvez également copier la commande SQL depuis le portail de profil OIDC que votre fournisseur vous a partagé. Assurez-vous de sélectionner le partage auquel vous souhaitez accéder.

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'Endpoint Iceberg REST Catalog. Vous le trouverez dans le portail de profil OIDC ou dans votre fichier de profil download.
  • <share-name>: le nom du partage que vous avez sélectionné dans le portail de profil OIDC.
  • <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 -- Optional
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'Endpoint Iceberg REST Catalog. Vous le trouverez dans le portail de profil OIDC ou dans votre fichier de profil download.
  • <share-name>: le nom du partage que vous avez sélectionné dans le portail de profil OIDC.
  • <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>