Leggi le condivisioni OpenSharing da un client Iceberg utilizzando la federazione Open ID Connect (OIDC)

I destinatari dei dati della federazione Open ID Connect (OIDC) possono utilizzare un client Iceberg REST Catalog (IRC), come OSS Spark o Snowflake, per accedere alle condivisioni OpenSharing create in Azure Databricks.

Se invece si usano token di connessione per gestire l'autenticazione, vedere Creare un oggetto destinatario per gli utenti non Databricks usando token di connessione (condivisione da Databricks a Open).

Questa pagina è destinata ai destinatari. Per informazioni su come i provider possono abilitare la federazione OIDC per i destinatari in Azure Databricks, vedere Abilitare la federazione OIDC (Open ID Connect) per i destinatari OpenSharing.

Scarica il profilo Iceberg per connettori OAuth

  1. Vai all'URL del portale del profilo OIDC fornito dal provider di Azure Databricks.

    Richiedi l'URL se non l'hai ancora ricevuto.

  2. Nella pagina del portale, seleziona la condivisione a cui vuoi accedere dal menu a tendina.

  3. Clicca su scarica file.

  4. Nel file scaricato sostituire clientId, clientSecrete scope con i valori.

  5. Usa il nome della quota selezionata come magazzino nella tua configurazione.

  6. Importa il file del profilo di condivisione con il codice del client.

Accedere ai dati condivisi

Accedi ai dati utilizzando qualsiasi Catalogo REST di Iceberg.

Snowflake

Nel foglio di lavoro Snowflake eseguire il comando seguente per creare un'integrazione del catalogo. È anche possibile copiare il comando SQL dal portale del profilo OIDC condiviso dal provider. Assicurati di selezionare la condivisione a cui vuoi accedere.

Sostituire i valori segnaposto prima di eseguirlo:

  • <catalog-integration-name>: nome per l'integrazione del catalogo.
  • <catalog-uri>: Il punto finale del catalogo REST di Iceberg. Trovalo nel portale profilo OIDC o nel file profilo scaricato.
  • <share-name>: Il nome della condivisione che hai selezionato nel portale profili OIDC.
  • <oauth-token-uri>: endpoint del token OAuth del tuo IdP.
  • <oauth-client-id> e <oauth-client-secret>: credenziali OAuth.
  • <oauth-scope>: Il tuo ambito OAuth.
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;

Creare un database collegato che usa l'integrazione del catalogo. Sostituire <database-name> con un nome per il database.

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

OSS Spark

L'esempio seguente legge i dati condivisi da un catalogo REST di Iceberg usando OSS Spark. Eseguirlo da un'installazione spark che include il runtime di Iceberg Spark e i JAR del bundle AWS.

Sostituire i valori segnaposto prima di eseguirlo:

  • <spark-home>: percorso dell'installazione di Spark.
  • <iceberg-jars-path>: Il percorso dei tuoi file JAR Iceberg.
  • <catalog-uri>: Il punto finale del catalogo REST di Iceberg. Trovalo nel portale profilo OIDC o nel file profilo scaricato.
  • <share-name>: Il nome della condivisione che hai selezionato nel portale profili OIDC.
  • <oauth-token-uri>: endpoint del token OAuth del tuo IdP.
  • <oauth-client-id> e <oauth-client-secret>: credenziali OAuth.
  • <oauth-scope>: Il tuo ambito OAuth.
  • <spark-script>: percorso dello script Scala da eseguire.
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>