Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com a federação de consulta, as consultas são transferidas para o banco de dados externo usando APIs JDBC. A consulta é executada no Databricks e usando computação remota. A federação de consulta é usada para fontes como MySQL, PostgreSQL, Redshift, Teradata e muito mais.
O que é a Federação de Lakehouse?
A lakehouse enfatiza o armazenamento central de dados para reduzir a redundância e o isolamento dos dados. Sua organização pode ter vários sistemas de dados em produção e talvez você queira consultar dados em sistemas conectados por vários motivos:
- Relatórios sob demanda.
- Trabalho de prova de conceito.
- A fase exploratória de novos pipelines de ETL ou relatórios.
- Suporte a cargas de trabalho durante a migração incremental.
Em cada um desses cenários, a federação de consulta faz com que você obtenha insights de forma mais rápida, pois você pode consultar os dados no local e evitar processamento complexo e demorado de ETL.
A federação de consulta destina-se a casos de uso nos quais:
- Você não deseja ingerir dados em Azure Databricks.
- Você quer que suas consultas aproveitem a computação no sistema de banco de dados externo.
- Você quer as vantagens das interfaces do Catálogo do Unity e da governança de dados, incluindo controle de acesso refinado, linhagem de dados e pesquisa.
Federação de consulta vs. Lakeflow Connect
A federação de consulta permite que você consulte fontes de dados externas sem mover seus dados. O Databricks recomenda a ingestão usando conectores gerenciados do Lakeflow Connect porque eles são dimensionados para acomodar grandes volumes de dados e menor latência de consulta. No entanto, talvez você queira consultar seus dados sem migrá-los. Quando você tiver uma opção entre conectores de ingestão gerenciada e federação de consulta, escolha federação de consulta para relatórios ad hoc ou provas de conceito em seus pipelines de ETL.
Se a origem der suporte a ele, os conectores de ingestão baseados em consulta serão uma alternativa leve do Lakeflow Connect aos conectores CDC. Eles consultam a origem diretamente de maneira agendada usando uma coluna de cursor, sem exigir um gateway ou armazenamento temporário. Use conectores de ingestão baseados em consulta em uma situação em que precise de ingestão recorrente, mas não possua a infraestrutura CDC disponível.
Visão geral da configuração da federação de consulta
Para disponibilizar um conjunto de dados para consulta somente leitura usando a Federação de Lakehouse, crie o seguinte:
- Uma conexão, um objeto protegível no Catálogo do Unity que especifica um caminho e credenciais para acessar um sistema de banco de dados externo.
- Um catálogo externo, um objeto protegível no Unity Catalog que espelha um banco de dados de um sistema de dados externo, permitindo que você execute consultas somente-leitura nesse sistema de dados em seu espaço de trabalho Azure Databricks, gerenciando o acesso usando o Unity Catalog.
Fontes de dados com suporte
A federação de consulta dá suporte a conexões com as seguintes fontes:
- MySQL
- PostgreSQL
- Teradata
- Oracle
- Amazon Redshift
- Dados do Salesforce 360
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Data Warehouse)
- Google BigQuery
- Databricks
Requisitos de conexão
Requisitos de área de trabalho:
- Espaço de trabalho habilitado para o Unity Catalog. Os workspaces criados após 9 de novembro de 2023 são automaticamente habilitados para o Unity Catalog, incluindo o provisionamento automático de metastore. Você não precisa criar um metastore manualmente, a menos que seu workspace tenha sido criado antes da habilitação automática e não tenha sido ativado para o Unity Catalog. Consulte Habilitação Automática do Unity Catalog.
Requisitos de computação:
- Conectividade de rede do recurso de computação para os sistemas de banco de dados de destino. Confira Recomendações de rede para a Federação de Lakehouse.
- Azure Databricks deve usar a computação do Databricks Runtime 13.3 LTS ou superior e o modo de acesso Standard ou Dedicated.
- Os sql warehouses devem ser profissionais ou sem servidor e devem usar 2023.40 ou superior.
Permissões necessárias:
- Para criar uma conexão, você deve ser um administrador de metastore ou um usuário com o privilégio de
CREATE CONNECTIONno metastore do Unity Catalog anexado ao espaço de trabalho. Em workspaces que foram habilitados automaticamente para o Unity Catalog, os administradores de workspace possuem oCREATE CONNECTIONprivilégio por padrão. - Para criar um catálogo estrangeiro, você deve ter a permissão
CREATE CATALOGno metastore e ser o proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOGna conexão. Em workspaces que foram habilitados automaticamente para o Unity Catalog, os administradores de workspace possuem oCREATE CATALOGprivilégio por padrão.
Requisitos de permissão adicionais são especificados em cada seção baseada em tarefas a seguir.
Criar uma conexão
Uma conexão especifica um caminho e credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Gerenciador de Catálogos ou o comando SQL CREATE CONNECTION em um bloco de anotações Azure Databricks ou no editor de consultas SQL do Databricks.
Note
Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte POST /api/2.1/unity-catalog/connections e Comandos do Catálogo do Unity.
Permissões necessárias: administrador do metastore ou usuário que possua o privilégio CREATE CONNECTION.
Gerenciador de Catálogos
No workspace Azure Databricks, clique em
Catalog.
Na parte superior do painel Catálogo , clique no
ícone Adicionar e selecione Criar uma conexão no menu.Insira um Nome de conexão fácil de lembrar.
Selecione o Tipo de conexão (provedor de banco de dados, como MySQL ou PostgreSQL).
(Opcional) Adicione um comentário.
Clique em Próximo.
Insira as propriedades da conexão (como informações do host, caminho e credenciais de acesso).
Cada tipo de conexão requer informações de conexão diferentes. Consulte o artigo sobre o seu tipo de conexão, listado no sumário à esquerda.
Clique em Criar conexão.
Insira um nome para o catálogo estrangeiro.
(Opcional) Clique em Testar conectividade para confirmar se está funcionando.
Clique em Criar catálogo.
Selecione os workspaces nos quais os usuários podem acessar o catálogo que você criou. Você pode selecionar Todas as áreas de trabalho têm acesso ou clicar em Atribuir aos workspaces, selecionar as áreas de trabalho e então clicar em Atribuir.
Altere o Proprietário que poderá gerenciar o acesso a todos os objetos do catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
Conceda Privilégios no catálogo. Selecione o botão Conceder:
- Especifique as Entidades de segurança que terão acesso aos objetos do catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
- Selecione as Predefinições de privilégio a conceder a cada usuário. Todos os usuários da conta recebem
BROWSEcomo padrão.- Selecione Leitor de Dados no menu suspenso para conceder privilégios
readem objetos no catálogo. - Selecione Editor de Dados no menu suspenso para conceder os privilégios
reademodifyem objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
- Selecione Leitor de Dados no menu suspenso para conceder privilégios
- Selecione Conceder.
- Clique em Próximo.
- Na página Metadados, especifique os pares chave-valor dos rótulos. Para obter mais informações, consulte Aplicar etiquetas a objetos securitizáveis do Catálogo Unity.
- (Opcional) Adicione um comentário.
- Clique em Salvar.
SQL
Execute o seguinte comando em um notebook ou no editor de consultas SQL. Este exemplo é para conexões com um banco de dados PostgreSQL. As opções diferem por tipo de conexão. Consulte o artigo sobre o seu tipo de conexão, listado no sumário à esquerda.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Recomendamos que você use Azure Databricks secrets em vez de cadeias de caracteres de texto sem formatação para valores confidenciais, como credenciais. Por exemplo:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Para obter informações sobre como configurar segredos, consulte a seção Gerenciamento de segredos.
Para obter informações sobre como gerenciar conexões existentes, consulte Gerenciar conexões para a Federação de Lakehouse.
Criar um catálogo estrangeiro
Note
Se você usar a interface do usuário para criar uma conexão com a fonte de dados, a criação de catálogos estrangeiros será incluída e você poderá ignorar essa etapa.
Um catálogo estrangeiro espelha um banco de dados em um sistema de dados externo para que você possa consultar e gerenciar o acesso aos dados nesse banco de dados usando Azure Databricks e o Catálogo do Unity. Para criar um catálogo estrangeiro, use uma conexão com a fonte de dados que já foi definida.
Para criar um catálogo estrangeiro, você pode usar o Gerenciador de Catálogos ou o comando SQL CREATE FOREIGN CATALOG em um bloco de anotações Azure Databricks ou no editor de consultas SQL. Você também pode usar a API do Catálogo do Unity. Consulte a documentação de referência do Azure Databricks.
Os metadados do catálogo estrangeiro são sincronizados com o Catálogo do Unity em cada interação com o catálogo. Para o mapeamento de tipo de dados entre o Catálogo do Unity e a fonte de dados, verifique a seção Mapeamentos de Tipo de Dados da documentação de cada fonte de dados.
Permissões necessárias: permissão de CREATE CATALOG no metastore e propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.
Gerenciador de Catálogos
No workspace Azure Databricks, clique em
Catalog para abrir o Catalog Explorer.
Na parte superior do painel Catálogo, clique no
Adicionar dados e selecione Criar um catálogo no menu.Como alternativa, na página Acesso rápido, clique no botão Catálogos e depois no botão Criar catálogo.
Siga as instruções para criar catálogos estrangeiros em Criar catálogos.
SQL
Execute o seguinte comando SQL em um notebook ou no editor de consultas SQL. Os itens entre colchetes são opcionais. Substitua os valores de espaço reservado:
-
<catalog-name>: nome do catálogo em Azure Databricks. -
<connection-name>: o objeto de conexão que especifica a fonte de dados, o caminho e as credenciais de acesso. -
<database-name>: nome do banco de dados que você deseja espelhar como um catálogo no Azure Databricks. Não é obrigatório para o MySQL, que usa um namespace de duas camadas. -
<external-catalog-name>: somente Databricks para Databricks: nome do catálogo no workspace externo do Databricks que você está espelhando. Confira Criar um catálogo estrangeiro.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Para obter informações sobre como gerenciar e trabalhar com catálogos estrangeiros, consulte Gerenciar e trabalhar com catálogos estrangeiros.
Atualizar metadados usando Jobs do Lakeflow
O Catálogo do Unity atualiza automaticamente os metadados para tabelas estrangeiras no momento da consulta. Se o esquema do catálogo externo for alterado, o Catálogo do Unity buscará os metadados mais recentes quando a consulta for executada. Esse comportamento mantém o esquema atual e é ideal para a maioria das cargas de trabalho.
No entanto, o Databricks recomenda atualizar metadados manualmente nos seguintes casos:
- Para manter a consistência de tabelas estrangeiras acessadas por mecanismos externos. Os caminhos que ignoram o Databricks Runtime não disparam atualizações automáticas, o que pode resultar em metadados obsoletos.
- Para melhorar o desempenho de cargas de trabalho em que você deseja evitar a atualização de metadados durante a execução da consulta. Atualizar metadados proativamente permite que as consultas executem mais rapidamente usando metadados armazenados em cache. Essa abordagem é especialmente útil imediatamente após a criação de um catálogo estrangeiro porque a primeira consulta, caso contrário, dispara uma atualização completa.
Nesses casos, agende uma atualização periódica de metadados usando um Job do Lakeflow com o comando SQL REFRESH FOREIGN. Por exemplo:
-- Refresh an entire catalog
> REFRESH FOREIGN CATALOG some_catalog;
-- Refresh a specific schema
> REFRESH FOREIGN SCHEMA some_catalog.some_schema;
-- Refresh a specific table
> REFRESH FOREIGN TABLE some_catalog.some_schema.some_table;
Configure o trabalho a ser executado em intervalos regulares, dependendo da frequência com que você prevê alterações de esquema externo.
Carregar os dados de tabelas estrangeiras com exibições materializadas
O Databricks recomenda o carregamento de dados externos usando a federação de consultas ao criar visões materializadas. Confira Exibições materializadas.
Quando você usa a federação de consulta, os usuários podem referenciar os dados federados da seguinte maneira:
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
Exibir consultas federadas geradas pelo sistema
A federação de consulta converte instruções SQL do Databricks em instruções que podem ser enviadas por push para a fonte de dados federada. Para exibir a instrução SQL gerada, clique no nó de varredura da fonte de dados externa na exibição de grafo do Perfil de Consulta ou execute a instrução SQL EXPLAIN FORMATADA. Consulte a seção Pushdown com suporte da documentação de cada fonte de dados para cobertura.
Limitations
- As consultas são somente leitura. A única exceção é quando a Federação lakehouse é usada para federar o metastore de Hive herdado de um workspace (federação de catálogo). Tabelas estrangeiras nesse cenário são graváveis. Veja o que significa gravar em um catálogo estrangeiro em um metastore de Hive federado?.
- A limitação de conexões é determinada usando o limite de consulta simultânea do SQL do Databricks. Não há limite entre warehouses por conexão. Consulte a lógica de enfileiramento e dimensionamento automático.
- Não há suporte para cache de consulta do Databricks (Cache de Resultados e Cache de Disco) para consultas federadas. Isso significa que o
use_cached_resultparâmetro não se aplica a consultas em fontes federadas. - Tabelas e esquemas com nomes inválidos no Catálogo do Unity não têm suporte e são ignorados pelo Catálogo do Unity após a criação de um catálogo estrangeiro. Confira uma lista de regras de nomenclatura e limitações em Limitações.
- Os nomes de tabela e esquema são convertidos em letras minúsculas no Catálogo do Unity. Se isso causar colisões de nome, o Databricks não poderá garantir qual objeto é importado para o catálogo estrangeiro.
- Para cada tabela estrangeira referenciada, o Databricks agenda uma subconsulta no sistema remoto para retornar um subconjunto de dados dessa tabela e, em seguida, retorna o resultado para uma tarefa de executor do Databricks em um único fluxo. Se o conjunto de resultados for muito grande, o executor poderá ficar sem memória.
- O modo de acesso dedicado (antigo modo de acesso de usuário único) só está disponível para usuários que possuem a conexão.
- A Lakehouse Federation não pode federar tabelas externas com identificadores sensíveis a maiúsculas e minúsculas para conexões do Azure Synapse ou do Redshift.
Cotas de recursos
Azure Databricks impõe cotas de recursos em todos os objetos protegíveis do Catálogo do Unity. Essas cotas são listadas em Limites de recursos. Os catálogos estrangeiros e todos os objetos que eles contêm são incluídos no uso total da cota.
Se você espera exceder esses limites de recursos, entre em contato com sua equipe de conta do Azure Databricks.
Você pode monitorar o uso da cota usando as APIs de cotas de recursos do Catálogo do Unity. Consulte Monitorar o uso de cotas de recursos do Catálogo do Unity.