Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los destinatarios de datos de la federación Open ID Connect (OIDC) pueden usar un cliente de Iceberg REST Catalog (IRC), como OSS Spark o Snowflake, para acceder a los compartidos OpenSharing creados en Azure Databricks.
Si, en su lugar, utilizas tokens de portador para administrar la autenticación, consulta Crear un objeto de destinatario para usuarios que no sean de Databricks mediante tokens de portador (compartición de Databricks a Open).
Esta página está pensada para destinatarios. Para obtener información sobre cómo los proveedores pueden habilitar la federación de OIDC para los destinatarios en Azure Databricks, consulte Habilitación de la federación de Open ID Connect (OIDC) para destinatarios de OpenSharing.
Descargar perfil de Iceberg para conectores OAuth
Vaya a la dirección URL del portal de perfiles de OIDC que el proveedor de Azure Databricks ha compartido con usted.
Solicite la dirección URL si aún no la ha recibido.
En la página del portal, selecciona en el menú desplegable el recurso compartido al que quieres acceder.
Haz clic en Descargar archivo.
En el archivo descargado, reemplace
clientId,clientSecretyscopepor sus valores.Usa el nombre del recurso compartido seleccionado como almacén en tu configuración.
Importa el archivo de perfil de compartición con tu código de cliente.
Acceso a los datos compartidos
Accede a los datos utilizando cualquier catálogo Iceberg REST.
Snowflake
En la hoja de cálculo de Snowflake, ejecute el siguiente comando para crear una integración de catálogo. También puede copiar el comando SQL desde el portal de perfiles de OIDC que el proveedor ha compartido con usted. Asegúrate de seleccionar el recurso compartido al que quieres acceder.
Reemplace los valores del marcador de posición antes de ejecutarlo:
-
<catalog-integration-name>: Un nombre para la integración del catálogo. -
<catalog-uri>: El punto de conexión del catálogo REST de Iceberg. Encuéntralo en el portal de perfil OIDC o en tu archivo de perfil descargado. -
<share-name>: El nombre del recurso compartido que has seleccionado en el portal de perfiles OIDC. -
<oauth-token-uri>: el punto de conexión del token de OAuth de tu IdP. -
<oauth-client-id>y<oauth-client-secret>: sus credenciales de OAuth. -
<oauth-scope>: Tu alcance de 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;
Cree una base de datos vinculada que use la integración del catálogo. Reemplace por <database-name> un nombre para la base de datos.
CREATE DATABASE <database-name>
LINKED_CATALOG = (
CATALOG = <catalog-integration-name>
);
OSS Spark
En el ejemplo siguiente se leen los datos compartidos de un catálogo REST de Iceberg mediante OSS Spark. Ejecútelo desde una instalación de Spark que incluya el entorno de ejecución de Iceberg para Spark y los archivos JAR del paquete de AWS.
Reemplace los valores del marcador de posición antes de ejecutarlo:
-
<spark-home>: ruta de acceso a la instalación de Spark. -
<iceberg-jars-path>: la ruta de acceso a los archivos JAR de Iceberg. -
<catalog-uri>: El punto de conexión del catálogo REST de Iceberg. Encuéntralo en el portal de perfil OIDC o en tu archivo de perfil descargado. -
<share-name>: El nombre del recurso compartido que has seleccionado en el portal de perfiles OIDC. -
<oauth-token-uri>: el punto de conexión del token de OAuth de tu IdP. -
<oauth-client-id>y<oauth-client-secret>: sus credenciales de OAuth. -
<oauth-scope>: Tu alcance de OAuth. -
<spark-script>: ruta de acceso al script de Scala que se va a ejecutar.
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>