Neste documento, descrevemos como configurar uma conexão entre nuvens para consultar dados de um Databricks Unity Catalog diretamente no Google Cloud. Essa capacidade unifica a análise de dados integrando suas fontes de dados externas ao seu ambiente Google Cloud atual.
Depois, use o lakehouse sem fronteiras para gerenciar o acesso aos seus dados federados.
Antes de começar
- Leia a visão geral do Lakehouse para entender como ele gerencia o acesso aos dados.
- Leia sobre o acesso a dados entre nuvens para entender como funciona.
- Consulte os catálogos compatíveis para verificar as configurações aceitas.
- Saiba como usar secrets regionais do Secret Manager. Isso é necessário para configurar um Lakehouse com o Databricks Unity Catalog usando autenticação baseada em secret.
- Opcional: se você planeja rotear consultas por uma interconexão privada entre sua Google Cloud VPC e a VPC do provedor de nuvem remota (por exemplo, AWS), verifique se você tem uma conta ativa com o provedor remoto, provisione uma Interconexão dedicada entre nuvens ou Interconexão entre nuvens de parceiro, estabeleça sessões BGP com o Cloud Router e verifique se você tem as permissões necessárias do IAM nos dois ambientes de nuvem.
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Funções exigidas
Para receber as permissões necessárias para configurar o acesso entre nuvens, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Gerenciar catálogos do Lakehouse:
Administrador do BigLake (
roles/biglake.admin) -
Gerenciar secrets (se estiver usando a autenticação baseada em secrets):
Administrador do Secret Manager (
roles/secretmanager.admin) -
Rotear o tráfego pela interconexão particular (usuário):
Administrador de rede do Compute (
roles/compute.networkAdmin) -
Encaminhar o tráfego pela interconexão particular (conta de serviço do catálogo):
- Leitor do Service Directory (
roles/servicedirectory.viewer) - Serviço autorizado do PSC do Diretório de Serviços (
roles/servicedirectory.pscAuthorizedService)
- Leitor do Service Directory (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Limitações e considerações
Nesta seção, listamos as limitações e considerações para acessar dados entre nuvens.
- Provedores de nuvem Interconexão entre nuvens Interconnect:o uso de uma interconexão particular com seu data lakehouse sem fronteiras é compatível com os seguintes provedores de nuvem remotos: Amazon Web Services (AWS). Você pode usar um Cross-Cloud Interconnect dedicado ou um Cross-Cloud Interconnect por parceiro.
- Roteamento de rede:se uma interconexão privada (como CCI dedicada ou CCI de parceiro) não estiver configurada, as consultas serão roteadas pela Internet pública. Isso pode resultar em taxas de saída mais altas do provedor de nuvem remoto e em um desempenho menos previsível.
- Configuração do Databricks Unity Catalog:
- Somente os catálogos do Databricks Unity que usam um local externo na AWS ou um local externo no Google Cloud são compatíveis. Os Unity Catalogs que usam armazenamento padrão na AWS ou armazenamento padrão no Google Cloud não são compatíveis.
- É necessário ativar o acesso a dados externos no metastore usado pelo Unity Catalog, que fica desativado por padrão.
- É necessário conceder o privilégio
EXTERNAL USE SCHEMAao principal de serviço do Databricks nos esquemas ou no catálogo de destino para ativar a venda de credenciais para acesso a dados externos. Sem esse privilégio, a atualização de metadados em segundo plano e a venda de credenciais para consultas falham.
- Somente leitura:os catálogos federados no Lakehouse são visualizações somente leitura do catálogo remoto. A manipulação de recursos (como criar, atualizar ou excluir recursos) não é compatível e precisa ser realizada diretamente no catálogo remoto.
- Atualização de dados:a flag
--refresh-intervalde um catálogo federado determina a frequência de sincronização dos metadados. O valor precisa ser0s(desativado) ou pelo menos300s(5 minutos). A atualização dos metadados em segundo plano de um catálogo pode levar mais tempo quanto mais recursos de namespace e tabela houver. Se a atualização anterior exceder o tempo limite, a atualização atual será ignorada, mas a próxima será programada no intervalo seguinte. - Cache do Lakehouse:o cache do Lakehouse é ativado automaticamente
para todas as consultas entre nuvens, economizando custos de saída ao armazenar blocos de dados
localmente em Google Cloud. As chaves de criptografia gerenciadas pelo cliente
(CMEK) não são compatíveis com o armazenamento em cache. Os dados em cache são
criptografados usando Google-owned and Google-managed encryption keys. Se a
restrição de política da organização
constraints/gcp.restrictNonCmekServicesfor aplicada a qualquer tabela na consulta, o armazenamento em cache será desativado automaticamente para essa consulta. Para mais informações, consulte Armazenamento em cache inteligente. - Residência e conformidade de dados:ao criar um catálogo ou uma conexão federada em uma região do Google Cloud , os dados em repouso armazenados em cache ficam nessa região de destino. Se os dados remotos na nuvem estiverem em uma jurisdição diferente, verifique se o armazenamento em cache entre regiões está em conformidade com os requisitos de residência de dados e conformidade regulatória da sua organização.
Fluxo de trabalho geral
Para acessar dados entre nuvens, siga estas etapas gerais:
- Configure o Cross-Cloud Interconnect (opcional): configure uma conexão privada entre sua Google Cloud VPC e seu provedor de nuvem remota.
- Configurar a federação:configure a autenticação e crie um catálogo federado no Lakehouse.
- OpenID Connect (OIDC) (recomendado): crie o catálogo federado no Lakehouse especificando o ID do aplicativo principal de serviço remoto e configure uma política de federação no Databricks usando o ID exclusivo da conta de serviço do catálogo do Lakehouse.
- Autenticação baseada em secret:crie um secret no Secret Manager com suas credenciais de catálogo remoto. Em seguida, crie um catálogo federado no Lakehouse e conceda à conta de serviço do catálogo acesso ao secret.
- Verifique a conexão:verifique se o Lakehouse pode se conectar ao catálogo remoto.
- Consultar dados:execute consultas nos seus dados federados usando o BigQuery ou o Serviço Gerenciado para Apache Spark. O armazenamento em cache do Lakehouse é ativado automaticamente para consultas para economizar custos de saída. Para mais informações, consulte Consultar dados remotos.
- Configurar permissões:use o Identity and Access Management (IAM) para gerenciar quem pode visualizar e consultar os dados federados.
Configurar o Interconexão entre nuvens (opcional)
Por padrão, as consultas ao catálogo remoto são transmitidas pela Internet pública. Para ajudar a melhorar a segurança e a conformidade, fornecer desempenho previsível e reduzir os custos de transferência de dados, use uma interconexão particular. Isso estabelece uma conexão de rede privada dedicada entre sua nuvem privada virtual (VPC) do Google Cloud e a rede do provedor de nuvem remoto (por exemplo, AWS).
É possível provisionar e configurar uma das seguintes opções de interconexão privada entre sua Google Cloud VPC e a VPC do provedor de nuvem remota (por exemplo, AWS):
- Cross-Cloud Interconnect dedicado: uma conexão física dedicada.
- Cross-Cloud Interconnect por parceiro: uma conexão por um provedor de serviços compatível.
Crie sessões do BGP entre o Cloud Router em Google Cloud e a VPC do provedor de nuvem remota para garantir a troca de rotas.
Para ativar consultas particulares, configure um caminho do Lakehouse para seu bucket de armazenamento remoto (por exemplo, um bucket do Amazon S3 da AWS) usando sua interconexão particular. Há dois fluxos de arquitetura que você pode seguir para configurar esse roteamento:
- Roteamento do balanceador de carga de rede de proxy regional interno:esse fluxo usa um balanceador de carga de rede de proxy regional internoGoogle Cloud para distribuir solicitações entre grupos de endpoints de rede (NEGs) de conectividade híbrida que apontam para várias interfaces de rede elástica (ENIs) da AWS. Esse fluxo é essencial para balanceamento de carga, escalonabilidade e alta disponibilidade. Ele é obrigatório para a CCI de parceiro e recomendado para a CCI dedicada para balanceamento de carga, escalonabilidade e alta disponibilidade.
- Roteamento direto de endpoint:esse fluxo conecta o Diretório de serviços diretamente a um único endereço IP de endpoint de interface da VPC da AWS. Esse fluxo só funciona para CCI dedicada e não é compatível com CCI de parceiro.
Selecione o fluxo de configuração que corresponde aos seus requisitos de arquitetura:
Balanceador de carga de rede de proxy interno regional
Para configurar um balanceador de carga de rede de proxy regional interno para distribuir solicitações em várias ENIs da AWS para alta disponibilidade e balanceamento de carga, siga estas etapas:
Configurar a rede da AWS
Primeiro, crie um endpoint de interface de VPC do Amazon S3 (AWS PrivateLink):
- No console da VPC da AWS, crie um endpoint de interface para o Amazon S3.
- Em nome do serviço, especifique
com.amazonaws.AWS_REGION.s3. - Selecione a VPC e as sub-redes conectadas pelo Direct Connect à sua Google Cloud VPC.
- Anexe grupos de segurança ao endpoint para controlar o acesso de entrada.
- Isso provisiona interfaces de rede elásticas (ENIs, na sigla em inglês) em cada sub-rede selecionada. Anote os endereços IP particulares dessas ENIs.
Em seguida, configure os grupos de segurança:
- Verifique se o grupo ou os grupos de segurança anexados às ENIs do endpoint do Amazon S3 permitem o tráfego TCP de entrada na porta
443da sua VPC Google Cloud . Isso precisa incluir o intervalo CIDR da sua sub-rede somente proxyGoogle Cloud para permitir verificações de integridade e tráfego encaminhado.
Configurar Google Cloud rede
Para simplificar a configuração, execute os comandos a seguir para configurar o balanceador de carga interno. Para configurações avançadas ou mais detalhes, consulte Configurar um balanceador de carga de rede de proxy regional interno para endpoints híbridos.
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK \ --range=PROXY_SUBNET_RANGE
Substitua:
PROXY_SUBNET_NAME: um nome para a sub-rede somente proxy.PROXY_SUBNET_RANGE: um intervalo CIDR não utilizado na rede VPC (por exemplo,10.129.0.0/23).
Criar uma verificação de integridade regional:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --region=REGION \ --port=443
Substitua:
HEALTH_CHECK_NAME: um nome para a verificação de integridade.REGION: a região Google Cloud (por exemplo,us-east4).
Crie grupos de endpoints de rede (NEGs) de conectividade híbrida e adicione endpoints:
Crie um NEG híbrido (
NON_GCP_PRIVATE_IP_PORT) para cada zona:gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ZONE \ --network=VPC_NETWORK
Adicione o endereço IP particular da sua ENI da AWS ao NEG híbrido correspondente:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_IP,port=443"
Substitua:
NEG_NAME: um nome para o NEG híbrido.ZONE: a zona do Google Cloud (por exemplo,us-east4-a). Essa zona precisa estar na região do anexo da VLAN do Interconexão entre nuvens.VPC_NETWORK: o nome da sua rede VPC.AWS_S3_IP: o endereço IP particular do endpoint de VPC (ENI) do Amazon S3 da AWS nessa zona.
Repita esses comandos para criar NEGs e adicionar endpoints para outras zonas se as ENIs da AWS estiverem distribuídas em várias zonas.
Crie e configure o serviço de back-end:
Crie um serviço de back-end regional com balanceamento de carga gerenciado interno:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
Adicione os NEGs híbridos ao serviço de back-end:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-zone=ZONE \ --balancing-mode=CONNECTION \ --max-connections=MAX_CONNECTIONS
Substitua:
BACKEND_SERVICE_NAME: um nome para o serviço de back-end.NEG_NAME: o nome do NEG híbrido que você criou na etapa anterior.ZONE: a zona do Google Cloud (por exemplo,us-east4-a).MAX_CONNECTIONS: o número máximo de conexões simultâneas que o back-end precisa processar (por exemplo,100).
Repita o comando
add-backendpara cada NEG híbrido criado.Configure o front-end do balanceador de carga:
Crie um proxy TCP de destino:
gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --region=REGION
Crie uma regra de encaminhamento para rotear o tráfego para o proxy de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=VPC_NETWORK \ --subnet=VPC_SUBNET \ --ports=443 \ --region=REGION \ --target-tcp-proxy=TARGET_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --allow-global-access
Substitua:
TARGET_PROXY_NAME: um nome para o proxy de destino.FORWARDING_RULE_NAME: um nome para a regra de encaminhamento.VPC_SUBNET: o nome da sub-rede VPC.
Depois de criar a regra de encaminhamento para o balanceador de carga, anote o endereço IP interno atribuído a ele. Esta é sua
ILB_IP_ADDRESS.
Configurar o Service Directory
Registre o endereço IP do ILB no Diretório de Serviços para que o Lakehouse possa descobri-lo.
Crie um namespace para sua nuvem remota:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Substitua:
NAMESPACE: um identificador exclusivo para o namespace.PROJECT_ID: o ID do projeto do Google Cloud .REGION: a região do Google Cloud . Por exemplo,us-east4. Precisa ser a mesma região do catálogo federado.
Crie um serviço no namespace do Diretório de serviços:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Substitua:
SERVICE_NAME: um identificador exclusivo para seu serviço.
Crie um endpoint para o ILB no serviço:
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --namespace=NAMESPACE \ --service=SERVICE_NAME \ --location=REGION \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \ --address=ILB_IP_ADDRESS \ --port=443
Substitua:
ENDPOINT_NAME: um identificador exclusivo para o endpoint.PROJECT_NUMBER: o número do projeto do Google Cloud. Use o número do projeto na flag--network.ILB_IP_ADDRESS: o endereço IP interno da regra de encaminhamento do ILB.
Endpoint direto
Para configurar o Diretório de serviços para rotear o tráfego diretamente para um único endereço IP do endpoint da VPC de interface da AWS, siga estas etapas:
- Crie um endpoint de VPC de interface para o Amazon S3 na VPC da AWS. Anote o endereço IP e a porta desse endpoint.
Crie um namespace para sua nuvem remota:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Substitua:
NAMESPACE: um identificador exclusivo para o namespace.PROJECT_ID: o ID do projeto do Google Cloud .REGION: a região do Google Cloud . Por exemplo,us-east4. Precisa ser a mesma região do catálogo federado.
Crie um serviço no namespace do Diretório de serviços:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Substitua:
SERVICE_NAME: um identificador exclusivo para seu serviço.
Crie um endpoint no serviço que contenha as informações de roteamento do endpoint de VPC de interface do Amazon S3:
gcloud service-directory endpoints create ENDPOINT_NAME \ --service=SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION \ --address=S3_VPCE_IP_ADDRESS \ --port=S3_VPCE_PORT \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK
Substitua:
ENDPOINT_NAME: um identificador exclusivo para o endpoint.S3_VPCE_IP_ADDRESS: o endereço IP do endpoint da VPC da interface do Amazon S3. Por exemplo,10.0.1.45.S3_VPCE_PORT: o número da porta do endpoint da VPC da interface do Amazon S3. Por exemplo,443.PROJECT_NUMBER: o número do projeto do Google Cloud. Use o número do projeto na flag--network.VPC_NETWORK: o nome da rede VPC Google Cloud associada à interconexão particular.
Configurar a federação
Para consultar seus dados, configure um catálogo federado do Lakehouse que se conecte ao Databricks Unity Catalog remoto.
Configurar a autenticação
A federação exige autenticação no catálogo remoto como um principal de serviço do Databricks. Escolha uma das seguintes opções de autenticação:
OIDC
O OpenID Connect (OIDC) permite a autenticação sem secrets por meio da federação de tokens OAuth do Databricks.
- Crie um principal de serviço na sua conta do Databricks com acesso de leitura ao Unity Catalog de destino e o privilégio
EXTERNAL USE SCHEMAnos esquemas ou catálogo de destino. - Salve o ID do aplicativo (UUID) do principal de serviço. Você vai precisar dele para uma etapa posterior.
Baseado em secret
Essa opção usa um ID do cliente e uma chave secreta do cliente OAuth armazenados com segurança com secrets regionais do Secret Manager.
Crie um principal de serviço na sua conta do Databricks que tenha acesso de leitura ao Unity Catalog de destino.
Gere uma chave secreta OAuth para o principal de serviço.
Crie um arquivo JSON chamado
credentials.jsoncom seu payload:{ "client_id": "CLIENT_ID", "client_secret": "CLIENT_SECRET" }
Substitua:
CLIENT_ID: o ID do cliente OAuth da entidade de serviço do Databricks.CLIENT_SECRET: a chave secreta do cliente OAuth para sua entidade de serviço do Databricks.
Configure o endpoint regional do Secret Manager:
Por padrão, o Secret Manager usa um endpoint global. No entanto, o Lakehouse exige que seus secrets sejam armazenados na mesma região do catálogo do Lakehouse. Para interagir com secrets regionais usando a CLI
gcloud, é necessário substituir o endpoint de API padrão da sessão ou do perfil atual. Por exemplo,secretmanager.us-east4.rep.googleapis.com.gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
Substitua:
REGION: a região Google Cloud em que o secret do Secret Manager está armazenado. Por exemplo,us-east4. Para evitar problemas de conectividade, o segredo e o catálogo precisam ser criados na mesma região.
Faça upload da carga útil para o Secret Manager:
gcloud secrets create DATABRICKS_SECRET_NAME \ --location="REGION" \ --project="PROJECT_ID" \ --data-file=credentials.json
Substitua:
DATABRICKS_SECRET_NAME: um nome para o secret do Databricks.PROJECT_ID: o ID do projeto Google Cloud .
Criar um catálogo federado
Crie o catálogo federado usando o console do Google Cloud ou a CLI do gcloud.
Considerações:
Somente os catálogos do Databricks Unity que usam um local externo na AWS ou um local externo no Google Cloud são compatíveis. Os catálogos do Databricks Unity que usam o armazenamento padrão na AWS ou o armazenamento padrão no Google Cloud não são compatíveis.
Ative o acesso a dados externos no metastore usado pelo Unity Catalog, que fica desativado por padrão.
É necessário conceder o privilégio
EXTERNAL USE SCHEMAao principal de serviço do Databricks nos esquemas ou no catálogo de destino para ativar a venda de credenciais para acesso a dados externos. Sem esse privilégio, a atualização de metadados em segundo plano e a venda de credenciais para consultas vão falhar.
Console
Para criar um catálogo federado:
No console do Google Cloud , acesse Lakehouse.
Clique em Criar catálogo.
Clique em Catálogo federado.
A seção Configuração do catálogo aparece.
Em Origem do catálogo federado, selecione Databricks (Unity).
Em Local de dados, selecione a região do Lakehouse em que você quer criar o catálogo federado. Por exemplo,
us-east4. Para minimizar a latência (mesmo na Internet pública), faça o seguinte ao selecionar uma região:- Se o Unity Catalog estiver na AWS, selecione a Google Cloud região mais próxima da sua região da AWS.
- Se o Unity Catalog estiver ativado Google Cloud, selecione a mesma região.
Clique em Continuar.
A seção Detalhes da conexão é exibida.
Na seção Detalhes do catálogo remoto, no campo Nome da instância do Unity, insira o nome da instância de destino do Databricks. Por exemplo,
abcd.cloud.databricks.com.No campo Nome do Unity Catalog, insira o nome do Databricks Unity Catalog de destino para federar.
Selecione uma opção para Método de autenticação:
- Em OIDC, insira o ID do aplicativo para o principal de serviço.
- Em Secret, insira o nome do secret. Use o seguinte formato:
projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME.
Opcional: no campo Nome do diretório de serviços, insira o caminho para o serviço do Diretório de Serviços. Por exemplo,
projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME. Isso só é necessário se você estiver configurando uma interconexão particular (Interconexão entre nuvens).Clique em Criar.
gcloud
OIDC
Se você usar o OIDC, especifique --unity-service-principal-application-id.
Internet pública (sem CCI)
Se você não configurar a CCI, a conexão vai ser feita de forma segura pela Internet pública.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS"
Propriedade do cliente (CCI)
Se você configurou uma interconexão particular (como CCI dedicada ou CCI de parceiro), forneça a referência do serviço do Diretório de Serviços para que o Lakehouse encaminhe o tráfego de forma particular.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"
Substitua:
FEDERATED_CATALOG_NAME: um nome para o catálogo federado.PROJECT_ID: o ID do projeto Google Cloud .REGION: a região do Lakehouse em que o catálogo federado é criado. Precisa ser a mesma região do namespace do Diretório de Serviços e do secret regional. Para minimizar a latência:- Se o Unity Catalog estiver na AWS, selecione a Google Cloud região mais próxima da sua região da AWS.
- Se o Unity Catalog estiver ativado Google Cloud, selecione a mesma região.
UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: o ID do aplicativo (UUID) do principal de serviço do Databricks.UNITY_INSTANCE_NAME: o nome da instância de destino do Databricks. Por exemplo,abcd.cloud.databricks.com.UNITY_CATALOG_NAME: o nome do Databricks Unity Catalog de destino para federação.REFRESH_INTERVAL: especifica a frequência com que a atualização de metadados em segundo plano é executada. Defina esse valor como uma duração, por exemplo,330sou5m30s.NAMESPACE_FILTERS: opcional. Uma lista separada por vírgulas de namespaces para federar. Por exemplo,ns1,ns2. Se omitido, todos os namespaces serão incluídos.- Se você estiver usando uma interconexão privada (CCI):
SERVICE_DIRECTORY_NAMESPACE: o namespace do Diretório de Serviços que você criou durante a configuração da interconexão particular.SERVICE_NAME: o nome do serviço do Diretório de serviços que você criou durante a configuração da interconexão privada.
Baseado em secret
Se você usar a autenticação baseada em secret, especifique --secret-name.
Internet pública (sem CCI)
Se você não configurar a CCI, a conexão vai ser feita de forma segura pela Internet pública.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS"
Propriedade do cliente (CCI)
Se você configurou uma interconexão particular (como CCI dedicada ou CCI de parceiro), forneça a referência do serviço do Diretório de Serviços para que o Lakehouse encaminhe o tráfego de forma particular.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"
Substitua:
FEDERATED_CATALOG_NAME: um nome para o catálogo federado.PROJECT_ID: o ID do projeto Google Cloud .REGION: a região do Lakehouse em que o catálogo federado é criado. Precisa ser a mesma região do namespace do Diretório de Serviços e do secret regional. Para minimizar a latência:- Se o Unity Catalog estiver na AWS, selecione a Google Cloud região mais próxima da sua região da AWS.
- Se o Unity Catalog estiver em Google Cloud, selecione exatamente a mesma região.
DATABRICKS_SECRET_NAME: o nome do seu secret do Databricks.UNITY_INSTANCE_NAME: o nome da instância de destino do Databricks. Por exemplo,abcd.cloud.databricks.com.UNITY_CATALOG_NAME: o nome do Databricks Unity Catalog de destino para federação.REFRESH_INTERVAL: especifica a frequência com que a atualização de metadados em segundo plano é executada. Defina esse valor como uma duração, por exemplo,330sou5m30s.NAMESPACE_FILTERS: opcional. Uma lista separada por vírgulas de namespaces para federar. Por exemplo,ns1,ns2. Se omitido, todos os namespaces serão incluídos.- Se você estiver usando uma interconexão privada (CCI):
SERVICE_DIRECTORY_NAMESPACE: o namespace do Diretório de Serviços que você criou durante a configuração da interconexão particular.SERVICE_NAME: o nome do serviço do Diretório de Serviços criado durante a configuração da interconexão particular.
Concluir a configuração da autenticação
Conclua o processo de autenticação usando o tipo de autenticação escolhido.
OIDC
Quando o catálogo é criado, o Lakehouse provisiona uma conta de serviço exclusiva para ele. Recupere o ID numérico exclusivo da conta de serviço e use-o para configurar uma política de federação para o principal de serviço do Databricks.
Recupere o ID numérico exclusivo da conta de serviço do catálogo do Lakehouse:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account-id)'
Na sua conta do Databricks, configure uma política de federação para o Service Principal que você criou antes. Use os valores a seguir:
- URL do emissor:
https://accounts.google.com - Assunto: o ID numérico exclusivo da conta de serviço do catálogo do Lakehouse recuperado na etapa anterior.
- Público-alvo:
https://accounts.cloud.databricks.com
Verifique se o principal de serviço do Databricks tem acesso de leitura ao catálogo e ao espaço de trabalho de destino, bem como o privilégio
EXTERNAL USE SCHEMAnos esquemas ou no catálogo de destino.- URL do emissor:
Baseado em secret
Quando o catálogo é criado, o Lakehouse provisiona uma conta de serviço exclusiva para ele (retornada como biglake-service-account na descrição do recurso).
É necessário conceder a essa conta de serviço permissão para acessar o secret que você criou anteriormente. A propagação de políticas do IAM pode levar alguns minutos.
Conceda à conta de serviço do catálogo permissão para acessar o secret:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets add-iam-policy-binding DATABRICKS_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION" \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/secretmanager.secretAccessor"
Para verificar se a conta de serviço do catálogo federado tem acesso ao secret, execute o seguinte comando:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets get-iam-policy DATABRICKS_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION"
Na saída, verifique se a conta de serviço biglake-service-account tem o
papel roles/secretmanager.secretAccessor atribuído a ela.
Verifique se o principal de serviço do Databricks tem acesso de leitura ao
catálogo e ao espaço de trabalho de destino, bem como o privilégio EXTERNAL USE SCHEMA
nos esquemas ou no catálogo de destino.
Concluir a configuração da interconexão privada (somente Interconexão entre nuvens)
Se você estiver roteando o tráfego por uma interconexão privada (Dedicated ou Partner CCI), conceda à conta de serviço do catálogo do Lakehouse permissões para descobrir e autorizar conexões pelo Diretório de serviços.
Console
No console do Google Cloud , acesse a página IAM.
Clique em Conceder acesso ou Adicionar.
No campo Novos principais, insira o endereço de e-mail da conta de serviço do catálogo do Lakehouse. Para recuperar esse endereço de e-mail, descreva o catálogo (consulte a guia
gcloud).No menu Papel, selecione Leitor do Service Directory (
roles/servicedirectory.viewer).Clique em Adicionar outro papel e selecione Serviço autorizado do PSC do Diretório de Serviços (
roles/servicedirectory.pscAuthorizedService).Clique em Salvar.
gcloud
Conceda os papéis necessários à conta de serviço do catálogo:
# Grant Service Directory Viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.viewer" # Grant Service Directory PSC Authorized Service gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.pscAuthorizedService"
Verifique a conexão
Verifique se o ciclo de atualização de metadados em segundo plano do catálogo foi concluído e se os namespaces estão sincronizados.
Verifique se o status de atualização indica sucesso:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Confirme se os namespaces estão sincronizados:
gcloud alpha biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
A seguir
- Consultar dados remotos.
- Resolver problemas de acesso a dados entre nuvens para o Databricks Unity Catalog.