Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Com a federação de consultas, as consultas são enviadas para o banco de dados externo usando APIs JDBC. A consulta é executada tanto no Databricks quanto usando computação remota. A federação de consultas é usada para fontes como MySQL, PostgreSQL, Redshift, Teradata e outras.
Por que usar a Lakehouse Federation?
O lakehouse enfatiza o armazenamento central de dados para reduzir a redundância e o isolamento de dados. Sua organização pode ter vários sistemas de dados em produção e você pode querer 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 ou relatórios de ETL.
- Suporte às cargas de trabalho durante a migração incremental.
Em cada um desses cenários, a federação de consultas leva você a insights mais rapidamente, porque você pode consultar os dados no local e evitar o processamento de ETL complexo e demorado.
A federação de consultas é destinada a casos de uso nos quais:
- Não quer ingerir dados no Azure Databricks.
- Você deseja que suas consultas aproveitem a computação no sistema de banco de dados externo.
- Você quer as vantagens das interfaces do Catálogo Unity e da governança de dados, incluindo controle de acesso refinado, linhagem de dados e pesquisa.
Federação de consultas vs. Lakeflow Connect
A federação de consultas permite consultar fontes de dados externas sem mover os dados. A Databricks recomenda a ingestão utilizando conectores geridos Lakeflow Connect porque escalam para acomodar volumes elevados de dados e menor latência de consulta. No entanto, convém consultar seus dados sem movê-los. Quando você tiver a opção entre conectores de ingestão gerenciados e federação de consultas, escolha federação de consultas para relatórios ad hoc ou trabalho de prova de conceito em seus pipelines de ETL.
Se a sua fonte o suportar, os conectores de ingestão baseados em consulta são uma alternativa leve tanto ao Lakeflow Connect como aos conectores CDC. Consultam diretamente a fonte com base numa programação usando uma coluna de cursor, sem necessidade de gateway ou armazenamento intermediário. Use conectores de ingestão baseados em consultas quando precisar de ingestão recorrente mas não tiver infraestrutura CDC disponível.
Visão geral da configuração da federação de consultas
Para disponibilizar um conjunto de dados para consulta de leitura apenas, usando a Lakehouse Federation, deve-se criar o seguinte:
- Uma conexão, um objeto protegível no Unity Catalog que especifica um caminho e credenciais para acessar um sistema de banco de dados externo.
- Um catálogo estrangeiro, um objeto securável no Unity Catalog que espelha uma base de dados num sistema de dados externo, permitindo-lhe realizar consultas apenas de leitura nesse sistema de dados no seu espaço de trabalho Azure Databricks, gerindo o acesso através do Unity Catalog.
Fontes de dados suportadas
A federação de consultas suporta 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 do espaço de trabalho:
- Espaço de trabalho habilitado para o Unity Catalog. Os espaços de trabalho criados após 9 de novembro de 2023 são ativados automaticamente para o Unity Catalog, incluindo o provisionamento automático de metastores. Não precisas de criar uma metastore manualmente a menos que o teu espaço de trabalho seja anterior à ativação automática e não tenha sido ativado para o Unity Catalog. Consulte Ativação automática do Unity Catalog.
Requisitos de computação:
- Conectividade de rede do seu recurso de computação para os sistemas de banco de dados de destino. Consulte as recomendações de rede para a Lakehouse Federation.
- A computação do Azure Databricks deve usar o Databricks Runtime 13.3 LTS ou superior e o modo de acesso Standard ou Dedicado.
- Os armazéns SQL 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. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esseCREATE CONNECTIONprivilégio por defeito. - 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égio deCREATE FOREIGN CATALOGna conexão. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esseCREATE CATALOGprivilégio por defeito.
Os 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 ligação, pode usar o Explorador de Catálogos ou o comando SQL CREATE CONNECTION num caderno de Azure Databricks ou o 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 os comandos do Unity Catalog .
Permissões necessárias: administrador do Metastore ou usuário com o CREATE CONNECTION privilégio.
Explorador de Catálogos
No seu espaço de trabalho Azure Databricks, clique em
Catalog.
Na parte superior do painel Catálogo, clique no
ícone Adicionar e selecione Criar uma conexão no menu.Introduza um nome de ligação de fácil utilização.
Selecione o Tipo de conexão (provedor de banco de dados, como MySQL ou PostgreSQL).
(Opcional) Adicione um comentário.
Clique em Next.
Insira as propriedades de 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 para o seu tipo de ligação, listado no índice à esquerda.
Clique em Criar conexão.
Insira um nome para o catálogo estrangeiro.
(Opcional) Clique em Testar conexão para confirmar se ela funciona.
Clique em Criar o catálogo.
Selecione os espaços de trabalho nos quais os usuários podem acessar o catálogo que você criou. Você pode selecionar Todos os espaços de trabalho têm acesso ou clicar em Atribuir a espaços de trabalho, selecionar os espaços de trabalho e clicar em Atribuir.
Altere o Proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. Comece a digitar um principal na caixa de texto e, em seguida, clique no principal nos resultados apresentados.
Conceder privilégios e no catálogo. Selecionar Conceder:
- Especifique os Principals que terão acesso aos objetos no catálogo. Comece a digitar um principal na caixa de texto e, em seguida, clique no principal nos resultados apresentados.
- Selecione as predefinições de privilégio para conceder a cada principal. Todos os usuários da conta recebem
BROWSEpor padrão.- Selecione Leitor de Dados no menu suspenso para conceder privilégios
reada objetos no catálogo. - Selecione Editor de Dados no menu suspenso para conceder privilégios
reademodifysobre objetos no catálogo. - Selecione manualmente os privilégios a conceder.
- Selecione Leitor de Dados no menu suspenso para conceder privilégios
- Clique em Conceder.
- Clique em Next.
- Na página Metadados, especifique pares de chave-valor das etiquetas. Para obter mais informações, consulte Aplicar tags a objetos protegíveis do Unity Catalog.
- (Opcional) Adicione um comentário.
- Clique em Salvar.
SQL
Execute o seguinte comando em um bloco de anotações ou no editor de consultas SQL. Este exemplo é para conexões com um banco de dados PostgreSQL. As opções diferem de acordo com o tipo de conexão. Consulte o artigo para o seu tipo de ligação, listado no índice à esquerda.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Recomendamos que use Azure Databricks secrets em vez de cadeias de texto simples para valores sensíveis 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 Gerenciamento de segredos.
Para obter informações sobre como gerenciar conexões existentes, consulte Gerenciar conexões para o Lakehouse Federation.
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álogo estrangeiro será incluída e você poderá ignorar esta etapa.
Um catálogo estrangeiro espelha uma base de dados num sistema de dados externo para que possas consultar e gerir o acesso aos dados dessa base de dados usando o Azure Databricks e o Unity Catalog. 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, pode usar o Explorador de Catálogos ou o comando SQL CREATE FOREIGN CATALOG num bloco de notas Azure Databricks ou o editor de consultas SQL. Você também pode usar a API do Unity Catalog. Consulte a documentação de referência do Azure Databricks.
Os metadados do catálogo estrangeiro são sincronizados no Unity Catalog em cada interação com o catálogo. Para o mapeamento de tipo de dados entre o Unity Catalog 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:CREATE CATALOG permissão no metastore e propriedade da conexão ou privilégio na conexão.
Explorador de Catálogos
No seu espaço de trabalho Azure Databricks, clique em
Catalog para abrir o Explorador de Catálogos.
Na parte superior do painel Catálogo , clique no
mais dados e selecione Criar um catálogo no menu.Como alternativa, a partir da página de Acesso rápido, clique no botão Catálogos e, em seguida, clique 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 bloco de anotações ou no editor de consultas SQL. Os itens entre parênteses são opcionais. Substitua os valores dos espaços reservados:
-
<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 da base de dados que pretende espelhar como catálogo em Azure Databricks. Não é necessário para o MySQL, que usa um namespace de duas camadas. -
<external-catalog-name>: Databricks-to-Databricks somente: Nome do catálogo no espaço de trabalho externo Databricks que está a espelhar. Consulte 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 o Lakeflow Jobs
O Unity Catalog atualiza automaticamente os metadados para tabelas estrangeiras no momento da consulta. Se o esquema do catálogo externo mudar, o Unity Catalog buscará os metadados mais recentes quando a consulta for executada. Este comportamento mantém o esquema atualizado e é ótimo para a maioria das cargas de trabalho.
No entanto, o Databricks recomenda atualizar manualmente os metadados nos seguintes casos:
- Para manter a consistência das tabelas estrangeiras acedidas por motores externos. Os caminhos que contornam o Databricks Runtime não desencadeiam 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. A atualização proativa de metadados permite que as consultas sejam executadas mais rapidamente usando metadados armazenados em cache. Esta abordagem é especialmente útil imediatamente após a criação de um catálogo estrangeiro, pois a primeira consulta, caso contrário, desencadeia uma atualização completa.
Nesses casos, agende uma atualização periódica de metadados usando um trabalho do Lakeflow com o REFRESH FOREIGN comando SQL. 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 para ser executado em intervalos regulares, dependendo da frequência com que você prevê alterações de esquema externo.
Carregar dados de tabelas estrangeiras com vistas materializadas
O Databricks recomenda carregar dados externos usando a federação de consultas quando você estiver criando exibições materializadas. Ver Vistas materializadas.
Quando você usa a federação de consulta, os usuários podem fazer referência aos 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 consultas converte instruções SQL do Databricks em instruções que podem ser enviadas para a fonte de dados federada. Para visualizar a instrução SQL gerada, clique no nó de scan da fonte de dados estrangeira na visualização de gráfico de Perfil de Consulta, ou execute a instrução SQL EXPLAIN FORMATTED. Consulte a seção Suporte de Pushdown na documentação de cada fonte de dados para informação sobre a cobertura.
Limitations
- As consultas são somente leitura. A única exceção é quando a Lakehouse Federation é usada para federar o metastore herdado do Hive (federação de catálogo) de um espaço de trabalho. As tabelas estrangeiras nesse cenário são graváveis. Consulte O que significa escrever em um catálogo estrangeiro em um metastore federado do Hive?.
- A limitação de conexões é determinada pelo limite de consultas simultâneas do Databricks SQL. Não há limite entre armazéns por conexão. Consulte Lógica de enfileiramento e dimensionamento automático.
- A cache de consultas Databricks (Cache de Resultados e Cache de Disco) não é suportada para consultas federadas. Isto significa que o
use_cached_resultparâmetro não se aplica a consultas contra fontes federadas. - Tabelas e esquemas com nomes inválidos no Unity Catalog não são suportados e são ignorados pelo Unity Catalog após a criação de um catálogo estrangeiro. Consulte a lista de regras e limitações de nomenclatura em Limitações.
- Nomes de tabelas e nomes de esquema são convertidos em minúsculas no Unity Catalog. Se isso causar colisões de nome, o Databricks não poderá garantir qual objeto será 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 executora do Databricks em um único fluxo. Se o conjunto de resultados for muito grande, o executor pode ficar sem memória.
- O modo de acesso dedicado (anteriormente 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 estrangeiras com identificadores sensíveis a maiúsculas e minúsculas para ligações Azure Synapse ou Redshift.
Quotas de recursos
O Azure Databricks impõe quotas de recursos a todos os objetos seguros do Unity Catalog. Essas cotas estão listadas em Limites de recursos. Os catálogos estrangeiros e todos os objetos que eles contêm estão incluídos no uso total da cota.
Se espera ultrapassar estes limites de recursos, contacte a sua equipa de contas no Azure Databricks.
Você pode monitorar o uso da cota usando as APIs de cotas de recursos do Unity Catalog. Consulte Monitorar o uso das cotas de recursos do Unity Catalog.
Recursos adicionais
- Consultas federadas (Lakehouse Federation) na referência da linguagem SQL
- O que é federação de catálogos?
- Federação de metastore do Hive: habilitar o Unity Catalog para controlar tabelas registradas em um metastore do Hive
- Conectores baseados em consulta