O que é federação de consultas?
Com a federação de consultas, as consultas são enviadas para o banco de dados externo utilizando APIs JDBC. A consulta é executada tanto em Databricks quanto usando compute remoto. A federação de consultas é utilizada para fontes como MySQL, PostgreSQL, BigQuery, Redshift, Teradata e outras.
Por que utilizar a Federação Lakehouse?
O lakehouse enfatiza o armazenamento centralizado 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 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 ou relatórios de ETL.
- Suporte a cargas de trabalho durante a migração incremental.
Em cada um desses cenários, a federação de consultas permite que você receba insights mais rápido, pois pode consultar os dados no local e evitar o processamento complexo e demorado de ETL.
A federação de consultas é destinada a casos de uso em que:
- Não é recomendável importar dados para o Databricks.
- Você deseja que suas consultas aproveitem a computação no sistema de banco de dados externo.
- Você deseja as vantagens das interfaces do Unity Catalog 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 seus dados. Databricks Recomenda-se a ingestão utilizando conectores gerenciar, pois eles são escaláveis para acomodar altos volumes de dados, consultas de baixa latência e limites de API de terceiros. No entanto, talvez você queira consultar seus dados sem movê-los. Quando tiver a opção de escolher entre gerenciar conectores de ingestão e federação de consultas, selecione federação de consultas para relatórios ad hoc ou trabalho de prova de conceito em seu pipeline do ETL.
Visão geral da configuração da federação de consultas
Para tornar um conjunto de dados disponível para consulta e somente para leitura com o Lakehouse Federation, cria-se o seguinte:
- Uma conexão, um objeto protegido no Unity Catalog que especifica um caminho e credenciais para acessar um sistema de banco de dados externo.
- Um catálogo externo, um objeto protegido em Unity Catalog que espelha um banco de dados em um sistema de dados externo, permitindo que você execute consultas somente leitura nesse sistema de dados em seu Databricks workspace, gerenciando o acesso usando Unity Catalog.
Fontes de dados compatíveis
A federação de consultas oferece suporte a conexões com as seguintes fontes:
- MySQL
- PostgreSQL
- Teradata
- Oracle
- Amazon Redshift
- Nuvem de dados do Salesforce
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Data Warehouse)
- Google BigQuery
- Databricks
Requisitos de conexão
Requisitos do workspace:
- Espaço de trabalho preparado para o Catálogo do Unity.
Requisitos de computação:
- Conectividade de rede do seu recurso compute aos sistemas de banco de dados de destino. Consulte as recomendações de rede para a federação do Lakehouse.
- Databricks compute É necessário utilizar Databricks Runtime 13.3 LTS ou superior e o modo de acesso Standard ou Dedicado .
- Os SQL warehouse devem ser Pro ou Serverless e devem utilizar a versão 2023.40 ou superior.
Permissões necessárias:
- Para criar uma conexão, é preciso ser administrador de metastore ou usuário com o privilégio
CREATE CONNECTION
no metastore do Unity Catalog anexado ao espaço de trabalho. - Para criar um catálogo externo é preciso ter a permissão
CREATE CATALOG
no metastore e ser proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOG
na conexão.
Outros requisitos de permissão são definidos em cada seção baseada em tarefa a seguir.
Crie uma conexão
A conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION
do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
Você também pode utilizar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e o comandoUnity Catalog.
Permissões necessárias: Administrador do Metastore ou usuário com o privilégio CREATE CONNECTION
.
- Catalog Explorer
- SQL
-
Em Databricks workspace, clique em
Catalog .
-
Na parte superior do painel Catálogo , clique no ícone
Adicionar e selecione Adicionar uma conexão no menu.
Como alternativa, na página de acesso rápido , clique no botão Dados externos >, acesse a tab Conexões e clique em Criar conexão .
-
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 Avançar .
-
Insira as propriedades da conexão (como informações do host, caminho e credenciais de acesso).
Cada tipo de conexão exige informações de conexão diferentes. Consulte o artigo do seu tipo de conexã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 está funcionando.
-
Clique em Criar catálogo .
-
Selecione o espaço de trabalho no qual os usuários podem acessar o catálogo que você criou. É possível selecionar Todos os espaços de trabalho têm acesso ou clicar em Atribuir ao espaço de trabalho , selecionar o espaço de trabalho e, em seguida, clicar em Atribuir .
-
Alterar o proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. Inicie digitando o nome do diretor na caixa de texto e, em seguida, clique no diretor nos resultados exibidos.
-
Conceda privilégios no catálogo. Clique em Conceder :
-
Especifique os diretores que terão acesso aos objetos no catálogo. Inicie digitando o nome do diretor na caixa de texto e, em seguida, clique no diretor nos resultados exibidos.
-
Selecione as predefinições de privilégios a serem concedidas a cada diretor. Todos os usuários do account têm direito a
BROWSE
por default.- Selecione Leitor de dados no menu suspenso para conceder privilégios
read
em objetos no catálogo. - Selecione Editor de dados no menu suspenso para conceder os privilégios
read
emodify
aos objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
- Selecione Leitor de dados no menu suspenso para conceder privilégios
-
Clique em Conceder .
-
Clique em Avançar .
-
Na página Metadados , especifique as tags por meio de key-value. Para obter mais informações, consulte Aplicar tags a objetos protegidos d Unity Catalog.
-
(Opcional) Adicione um comentário.
-
Clique em Salvar .
-
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 de acordo com o tipo de conexão. Consulte o artigo do seu tipo de conexão, listado no índice à esquerda.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Recomendamos que você utilize segredos do Databricks em vez de strings de texto simples 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 federação lakehouse.
Crie um catálogo estrangeiro
Se utilizar a interface do usuário para criar uma conexão com a fonte de dados, a criação do catálogo externo está incluída e pode pular esta etapa.
Um catálogo externo espelha um banco de dados em um sistema de dados externo para você consultar e gerenciar o acesso aos dados nesse banco de dados com Databricks e Unity Catalog. Para criar um catálogo externo, utiliza-se uma conexão com a fonte de dados que já foi definida.
Para criar um catálogo externo, é possível utilizar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG
SQL em um Notebook Databricks ou no editor de consultas SQL. Também é possível utilizar o Unity Catalog API. Consulte a documentação de referência do Databricks.
Os metadados do catálogo estrangeiro são sincronizados em Unity Catalog a cada interação com o catálogo. Para o mapeamento de tipos de dados entre o Unity Catalog e a fonte de dados, consulte a seção Mapeamentos de tipos de dados da documentação de cada fonte de dados.
Permissões necessárias: permissão CREATE CATALOG
na metastore e propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG
na conexão.
- Catalog Explorer
- SQL
-
No seu Databricks workspace, clique em
Catalog para abrir o Catalog Explorer.
-
Na parte superior do painel Catálogo , clique no ícone
Adicionar dados e selecione Criar um catálogo no menu.
Como alternativa, na página de acesso rápido , clique no botão Catálogos e no botão Criar catálogo .
-
Siga as instruções para criar catálogos estrangeiros em Criar catálogos.
Execute o seguinte comando SQL em um notebook ou no editor de consultas SQL. Os itens entre colchetes são opcionais. Substitua os valores temporários:
<catalog-name>
: Nome para o catálogo no 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 Databricks. Não é necessário no MySQL, que usa um namespace de duas camadas.<external-catalog-name>
: Databricks-to-Databricks only: Nome do catálogo no Databricks externo workspace que você está espelhando. 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 externas com visualização materializada
Databricks Recomenda-se carregar a federação de consultas uso de dados externa ao criar uma visualização materializada. Consulte Visão materializada.
Quando você usa a federação de consultas, os usuários podem fazer referência aos dados federados da seguinte forma:
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
visualizar consultas federadas geradas pelo sistema
A federação de consultas traduz instruções de Databricks SQL em instruções que podem ser enviadas para a fonte de dados federada. view Para visualizar a instrução SQL gerada, clique no nó de varredura de fonte de dados estrangeira no gráfico view do Perfil da Consulta ou execute a instrução EXPLAIN FORMATTED SQL. Consulte a seção Pushdown suportado da documentação de cada fonte de dados para obter informações sobre a cobertura.
Limitações
-
As consultas somente permitem leitura.
A única exceção é quando o lakehouse Federation é utilizado para federar um Hive metastore legado de um workspace(federação de catálogos). As tabelas estrangeiras nesse cenário podem ser gravadas. Consulte O que significa escrever para um catálogo estrangeiro em um Hive metastore federado?
-
A limitação das conexões é determinada utilizando o limite de consultas concorrentes Databricks SQL. Não há limite entre armazéns por conexão. Consulte Lógica de enfileiramento e autoescala.
-
Tabelas e esquemas com nomes inválidos no Unity Catalog não são suportados e são ignorados pelo Unity Catalog durante a criação de um catálogo externo. Veja a lista de regras e limitações de nomenclatura em Limitações.
-
Os nomes de tabelas e de esquemas são convertidos em letras minúsculas no Unity Catalog. Se isso causar colisões de nomes, o Databricks não poderá garantir qual objeto será importado para o catálogo externo.
-
Para cada tabela estrangeira referenciada, um program Databricks a uma subconsulta no sistema remoto para retornar um subconjunto de dados dessa tabela e, em seguida, retorna o resultado para um Databricks executor a tarefa em uma única transmissão. Se o conjunto de resultados for muito grande, o executor poderá executar fora da 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 que diferenciam maiúsculas e minúsculas para conexões do Azure Synapse ou do Redshift.
quotas de recurso
Databricks aplica quotas de recurso em todos os objetos protegíveis 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 account Databricks.
É possível monitorar o uso da sua cota utilizando o recurso quotas do Unity Catalog APIs. Consulte Monitorar o uso das quotas de recursos do Unity Catalog.