O que é Lakehouse Federation?
Este artigo apresenta a Lakehouse Federation, a plataforma de federação de consultas que permite usar o Azure Databricks para executar consultas em várias fontes de dados externas. Ele também descreve como configurar conexões Lakehouse Federation e criar catálogos estrangeiros em seu metastore Unity Catalog.
O que é Lakehouse Federation?
Lakehouse Federation é a plataforma de federação de consultas para o Azure Databricks. O termo federação de consultas descreve uma coleção de recursos que permitem que usuários e sistemas executem consultas em várias fontes de dados sem a necessidade de migrar todos os dados para um sistema unificado.
O Azure Databricks usa o Unity Catalog para gerenciar a federação de consultas. Você configura conexões somente leitura para soluções de banco de dados populares usando drivers incluídos em clusters Pro SQL Warehouses, Serverless SQL Warehouses e Databricks Runtime. As ferramentas de governança de dados e linhagem de dados do Unity Catalog garantem que o acesso aos dados seja gerenciado e auditado para todas as consultas federadas feitas pelos usuários em seus espaços de trabalho do Azure Databricks.
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 ad hoc.
- 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 leva você a insights mais rapidamente, porque você pode consultar os dados no local e evitar o processamento de ETL complexo e demorado.
Lakehouse Federation destina-se a casos de uso quando:
- 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.
Visão geral da configuração da Lakehouse Federation
Para disponibilizar um conjunto de dados para consulta somente leitura usando a Lakehouse Federation, crie 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 protegível no 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 espaço de trabalho do Azure Databricks, gerenciando o acesso usando o Unity Catalog.
Fontes de dados suportadas
A Lakehouse Federation suporta conexões com os seguintes tipos de banco de dados:
- MySQL
- PostgreSQL
- Amazon Redshift
- Salesforce Data Cloud
- Snowflake
- Microsoft SQL Server
- Sinapse do Azure (SQL Data Warehouse)
- Google BigQuery
- Databricks
Requisitos de conexão
Requisitos do espaço de trabalho:
- Espaço de trabalho habilitado para o Catálogo Unity.
Requisitos de computação:
- Conectividade de rede do seu cluster Databricks Runtime ou SQL warehouse para os sistemas de banco de dados de destino. Consulte Recomendações de rede para a Lakehouse Federation.
- Os clusters do Azure Databricks devem usar o Databricks Runtime 13.3 LTS ou superior e o modo de acesso compartilhado ou de usuário único.
- Os armazéns SQL devem ser Pro ou Serverless 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
CREATE CONNECTION
privilégio no metastore do Unity Catalog anexado ao espaço de trabalho. - Para criar um catálogo estrangeiro, você deve ter a
CREATE CATALOG
permissão no metastore e ser o proprietário da conexão ou ter oCREATE FOREIGN CATALOG
privilégio na 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 CREATE CONNECTION
comando SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL.
Nota
Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte os comandos POST /api/2.1/unity-catalog/connections e 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 em 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.
Insira um nome de conexão amigável.
Selecione o tipo de conexão (provedor de banco de dados, como MySQL ou PostgreSQL).
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.
(Opcional) Clique em Testar conexão para confirmar se ela funciona.
(Opcional) Adicione um comentário.
Clique em Criar.
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 você use segredos do Azure Databricks 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 Gerenciamento de segredos.
Para obter informações sobre como gerenciar conexões existentes, consulte Gerenciar conexões para a Lakehouse Federation.
Criar um catálogo estrangeiro
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, pode usar o Gerenciador de Catálogos ou o CREATE FOREIGN CATALOG
comando SQL em um bloco de anotações do Azure Databricks ou no editor de consultas SQL.
Nota
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 o CREATE FOREIGN CATALOG
privilégio na conexão.
Explorador de Catálogos
No espaço de trabalho do Azure Databricks, clique em Catálogo para abrir o Gerenciador de Catálogos.
Na parte superior do painel Catálogo, clique no ícone Adicionar e selecione Adicionar um catálogo no menu.
Como alternativa, na página 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 de espaço reservado:
<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>
: Somente Databricks para Databricks : Nome do catálogo no espaço de trabalho externo Databricks 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.
Federação Lakehouse e visões materializadas
O Databricks recomenda o carregamento de dados externos usando a Lakehouse Federation quando você estiver criando exibições materializadas. Consulte Usar exibições materializadas no Databricks SQL.
Quando você usa a Lakehouse Federation, 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 Lakehouse Federation traduz instruções Databricks SQL em instruções que podem ser empurradas para baixo na fonte de dados federada. Para exibir a instrução SQL gerada, clique no nó de verificação da fonte de dados estrangeira na exibição de gráfico do Perfil de 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 a cobertura.
Limitações
- As consultas são somente leitura.
- A limitação de conexões é determinada usando o limite de consulta simultânea Databricks SQL. Não há limite entre armazéns por conexão. Consulte Enfileiramento e dimensionamento automático para armazéns SQL profissionais e clássicos.
- 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. As pesquisas também devem usar nomes minúsculos. Se houver tabelas ou esquemas com nomes duplicados em minúsculas, apenas uma das tabelas ou esquemas será importada para o catálogo estrangeiro.
- Para cada tabela estrangeira referenciada, o Azure 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 Azure Databricks em um único fluxo. Se o conjunto de resultados for muito grande, o executor pode ficar sem memória.
- O 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 que diferenciam maiúsculas de 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