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, BigQuery, Redshift, Teradata e muito mais.
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:
- Você não deseja 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. O Databricks recomenda a ingestão usando conectores gerenciados porque eles são dimensionados para acomodar grandes volumes de dados, consultas de baixa latência e limites de API de terceiros. 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.
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 que pode ser protegido no Unity Catalog e que espelha um banco de dados em um sistema de dados externo, permitindo a execução de consultas somente leitura nesse sistema no seu espaço de trabalho do Azure Databricks, com o acesso gerido 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
- Servidor Microsoft SQL
- Azure Synapse (Armazém de Dados SQL)
- Google BigQuery
- Databricks
Requisitos de conexão
Requisitos do espaço de trabalho:
- Espaço de trabalho habilitado para o 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 modo de acesso Standard ou Dedicated.
- 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. - 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.
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 conexão, você pode usar o Gerenciador de Catálogos ou o comando CREATE CONNECTION SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL.
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 do Azure Databricks, clique no
Catálogo.
Na parte superior do painel Catálogo, clique no ícone
Adicionar e selecione Adicionar uma conexão no menu.Como alternativa, na página Acesso rápido , clique no botão Dados externos > , vá para a guia Conexões e clique em Criar conexão.
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 o Azure Databricks Secrets em vez de strings de texto puro 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 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 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 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, você pode usar o Gerenciador de Catálogos ou o comando CREATE FOREIGN CATALOG SQL em um bloco de anotações do Azure Databricks ou no 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 do Azure Databricks, clique no
Catálogo para abrir o Catalog Explorer.
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 no 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 é 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.
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.
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 consegue federar tabelas externas com identificadores sensíveis a maiúsculas e minúsculas para conexões do Azure Synapse ou conexões Redshift.
Quotas de recursos
O Azure Databricks impõe cotas de recursos em todos os objetos protegíveis 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 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 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