Czytaj udostępnienia OpenSharing z klienta Iceberg korzystającego z federacji Open ID Connect (OIDC)

Odbiorcy danych federacji Open ID Connect (OIDC) mogą korzystać z klienta Iceberg REST Catalog (IRC), takiego jak OSS Spark lub Snowflake, aby uzyskać dostęp do udostępnień OpenSharing utworzonych w Azure Databricks.

Jeśli zamiast tego używasz tokenów okaziciela do zarządzania uwierzytelnianiem, zobacz Tworzenie obiektu odbiorcy dla użytkowników spoza Databricks przy użyciu tokenów okaziciela (udostępnianie Databricks do Open).

Ta strona jest przeznaczona dla adresatów. Aby uzyskać informacje o tym, jak dostawcy mogą włączyć federację OIDC dla odbiorców w usłudze Azure Databricks, zobacz Włączanie federacji Open ID Connect (OIDC) dla odbiorców Open Sharing.

Pobierz profil Iceberg dla złączy OAuth

  1. Przejdź do adresu URL portalu profilu OIDC udostępnionego Tobie przez dostawcę Azure Databricks.

    Zażądaj adresu URL, jeśli jeszcze go nie odebrano.

  2. Na stronie portalu wybierz udostępnienie, do którego chcesz mieć dostęp, z menu rozwijanego.

  3. Kliknij Pobierz plik.

  4. W pobranym pliku zastąp clientId, clientSecret i scope własnymi wartościami.

  5. Użyj wybranej nazwy share jako magazynu w swojej konfiguracji.

  6. Zaimportuj plik profilu udziału do kodu klienta.

Uzyskiwanie dostępu do udostępnionych danych

Uzyskaj dostęp do danych za pomocą dowolnego katalogu REST Iceberg.

Snowflake

W arkuszu Snowflake uruchom następujące polecenie, aby utworzyć integrację katalogową. Możesz również skopiować polecenie SQL z portalu profilu OIDC udostępnionego Ci przez dostawcę. Upewnij się, że wybrałeś udział sieciowy, do którego chcesz uzyskać dostęp.

Zastąp wartości symboli zastępczych przed uruchomieniem:

  • <catalog-integration-name>: Nazwa integracji katalogu.
  • <catalog-uri>: Punkt końcowy katalogu REST Iceberg. Znajdź go w portalu profili OIDC lub w pobranym pliku profilu.
  • <share-name>: Nazwa udziału, który wybrałeś w portalu profilu OIDC.
  • <oauth-token-uri>: punkt końcowy tokenów OAuth Twojego dostawcy tożsamości (IdP).
  • <oauth-client-id> i <oauth-client-secret>: Twoje poświadczenia OAuth.
  • <oauth-scope>: Zakres protokołu 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;

Utwórz połączoną bazę danych korzystającą z integracji katalogu. Zastąp <database-name> nazwą bazy danych.

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

OSS Spark

Poniższy przykład odczytuje współdzielone dane z katalogu REST Iceberg przy użyciu OSS Spark. Uruchom ją z poziomu instalacji platformy Spark, która obejmuje środowisko uruchomieniowe Platformy Iceberg Spark i pakiety JARS platformy AWS.

Zastąp wartości symboli zastępczych przed uruchomieniem:

  • <spark-home>: ścieżka do instalacji platformy Spark.
  • <iceberg-jars-path>: Ścieżka do plików JAR Twojego Iceberg.
  • <catalog-uri>: Punkt końcowy katalogu Iceberg REST. Znajdź go w portalu profilów OIDC lub w pobranym pliku profilu.
  • <share-name>: Nazwa udziału, który wybrałeś w portalu profilu OIDC.
  • <oauth-token-uri>: punkt końcowy tokenów OAuth Twojego dostawcy tożsamości (IdP).
  • <oauth-client-id> i <oauth-client-secret>: Twoje poświadczenia OAuth.
  • <oauth-scope>: Zakres protokołu OAuth.
  • <spark-script>: ścieżka do skryptu Scala do uruchomienia.
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>