Ler compartilhamentos do OpenSharing a partir de um cliente Iceberg usando federação Open ID Connect (OIDC)
Os destinatários de dados de federação Open ID Connect (OIDC) podem usar um cliente de Catálogo REST de Iceberg (IRC), como o OSS Spark ou o Snowflake, para acessar compartilhamentos do OpenSharing criados no Databricks.
Se você estiver usando tokens de acesso para gerenciar a autenticação, em vez disso, consulte Criar um objeto de destinatário para usuários que não são do Databricks usando tokens de acesso (compartilhamento Databricks para Aberto).
Esta página destina-se aos destinatários. Para obter informações sobre como os provedores podem habilitar a federação OIDC para destinatários no Databricks, consulte Habilitar federação do Open ID Connect (OIDC) para destinatários do OpenSharing.
Fazer download do perfil Iceberg para conectores OAuth
-
Acesse o URL do portal de perfil OIDC que o provedor Databricks compartilhou com você.
Solicite a URL caso ainda não a tenha recebido.
-
Na página do portal, selecione o compartilhamento que deseja acessar no menu suspenso.
-
Clique em Download file .
-
No arquivo baixado, substitua
clientId,clientSecretescopepelos seus valores. -
Use o nome do compartilhamento selecionado como o warehouse em sua configuração.
-
Importe o arquivo de perfil de compartilhamento usando seu código de cliente.
Acesse os dados compartilhados
Acesse os dados usando qualquer Catálogo REST de Iceberg.
Snowflake
Em sua planilha do Snowflake, execute o seguinte comando para criar uma integração de catálogo. Você também pode copiar o comando SQL do portal de perfil OIDC que seu provedor compartilhou com você. Certifique-se de selecionar o compartilhamento que deseja acessar.
Substitua os valores de espaço reservado antes de executar:
<catalog-integration-name>: Nome para a integração com o catálogo.<catalog-uri>: O endpoint do Catálogo REST de Iceberg. Encontre-o no portal de perfil OIDC ou no seu arquivo de perfil download.<share-name>: O nome do compartilhamento que você selecionou no portal de perfil OIDC.<oauth-token-uri>: o endpoint de token OAuth do seu IdP.<oauth-client-id>e<oauth-client-secret>: suas credenciais OAuth.<oauth-scope>: Seu Escopo 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;
Criar um banco de dados vinculado que usa a integração do catálogo. Substitua <database-name> por um nome para o banco de dados.
CREATE DATABASE <database-name>
LINKED_CATALOG = (
CATALOG = <catalog-integration-name>
);
OSS Spark
O exemplo a seguir lê dados compartilhados de um Catálogo REST Iceberg usando OSS Spark. Execute-o a partir de uma instalação Spark que inclua o runtime do Iceberg Spark e os JARs do pacote AWS.
Substitua os valores de espaço reservado antes de executar:
<spark-home>: O caminho para sua instalação do Spark.<iceberg-jars-path>O caminho para os arquivos JAR do Iceberg.<catalog-uri>: O endpoint do Catálogo REST de Iceberg. Encontre-o no portal de perfil OIDC ou no seu arquivo de perfil download.<share-name>: O nome do compartilhamento que você selecionou no portal de perfil OIDC.<oauth-token-uri>: o endpoint de token OAuth do seu IdP.<oauth-client-id>e<oauth-client-secret>: suas credenciais OAuth.<oauth-scope>: Seu Escopo OAuth<spark-script>: O caminho para o script Scala para executar.
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>