O que é a Federação de Lakehouse?

Este artigo apresenta a Federação de Lakehouse, 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 da Federação de Lakehouse e criar catálogos estrangeiros no metastore do Catálogo do Unity.

O que é a Federação de Lakehouse?

A Federação de Lakehouse é a plataforma de federação de consultas do Azure Databricks. O termo federação de consulta 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 Catálogo do Unity para gerenciar a federação de consultas. Configure conexões somente leitura para soluções de banco de dados populares usando drivers incluídos em Warehouses Pro SQL, Warehouses SQL sem servidor e clusters do Databricks Runtime. As ferramentas de linhagem de dados e governança de dados do Catálogo do Unity garantem que o acesso aos dados seja gerenciado e auditado para todas as consultas federadas feitas pelos usuários em seus workspaces do Azure Databricks.

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 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 para 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.

Lakehouse Federation destina-se a casos de uso quando:

  • Você não deseja ingerir dados no 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.

Visão geral da configuração da Federação de Lakehouse

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 estrangeiro, um objeto protegível no Catálogo do Unity que espelha um banco de dados em um sistema de dados externo, permitindo executar consultas somente leitura nesse sistema de dados no workspace do Azure Databricks, gerenciando o acesso usando o Catálogo do Unity.

Fontes de dados com suporte

A Federação de Lakehouse dá suporte a conexões com os seguintes tipos de banco de dados:

Requisitos de conexão

Requisitos do workspace:

  • Workspace habilitado para o Catálogo do Unity.

Requisitos de computação:

  • Conectividade de rede do cluster do Databricks Runtime ou do Warehouse SQL para os sistemas de banco de dados de destino. Confira Recomendações de rede para a Federação de Lakehouse.
  • 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 SQL warehouses precisam ser Pro ou sem servidor e precisam usar a versão 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 CONNECTION no metastore do Catálogo do Unity anexado ao workspace.
  • Para criar um catálogo estrangeiro, você deve ter a permissão de CREATE CATALOG no metastore e ser o proprietário da conexão ou ter o privilégio de CREATE FOREIGN CATALOG na conexão.

Requisitos de permissão adicionais são especificados em cada seção baseada em tarefa 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 Explorador do Catálogo ou o comando SQL CREATE CONNECTION em um notebook do Azure Databricks, ou o editor de consulta do Databricks SQL.

Observação

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 ou usuário do metastore com o privilégio de CREATE CONNECTION.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique em Ícone do catálogo Catálogo.

  2. Na parte superior do painel Catálogo, clique no ícone Ícone de adição ou mais Adicionar e selecione Adicionar uma conexão no menu.

    Como alternativa, na página Acesso rápido, clique no botão Dados externos >, vá até a guia Conexões e clique em Criar conexão.

  3. Insira um nome de conexão simples.

  4. Selecione o Tipo de conexão (provedor de banco de dados, como MySQL ou PostgreSQL).

  5. 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.

  6. (Opcional) Clique em Testar conectividade para confirmar se está funcionando.

  7. (Opcional) Adicione um comentário.

  8. Clique em Criar.

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 usar segredos do Azure Databricks em vez de cadeias de caracteres de texto não criptografado 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 configuração de segredos, confira Gestão 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

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 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 externo, você pode usar o Gerenciador de Catálogo ou o comando SQL CREATE FOREIGN CATALOG em um notebook do Azure Databricks ou no editor de consultas SQL.

Observação

Você também pode usar a API do Catálogo do Unity. Consulte 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: CREATE CATALOG permissão no metastore e a propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG na conexão.

Explorador do Catálogo

  1. Em seu workspace do Azure Databricks, clique em Ícone do catálogo Catálogo para abrir o Explorador de Catálogo.

  2. Na parte superior do painel Catálogo, clique no ícone Ícone de adição ou mais Adicionar e selecione Adicionar 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.

  3. 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 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 é 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.

Federação do Lakehouse e exibições materializadas

O Databricks recomenda o carregamento de dados externos usando a Federação do Lakehouse ao criar exibições materializadas. Confira Usar exibições materializadas no Databricks SQL.

Quando você usa a Federação do Lakehouse, 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 do Lakehouse 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 verificação da fonte de dados estrangeira na exibição de grafo de Perfil de consulta ou execute a instrução SQL EXPLAIN FORMATTED. Consulte a seção Pushdown com suporte da documentação de cada fonte de dados para cobertura.

Limitações

  • As consultas são somente leitura.
  • 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 Filas e dimensionamento automático dos warehouses do SQL profissionais e clássicos.
  • 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. As pesquisas também devem usar nomes em letras minúsculas. Se houver tabelas ou esquemas com nomes duplicados em minúsculas, somente 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 de executor do Azure Databricks por meio de um único fluxo. Se o conjunto de resultados for muito grande, o executor poderá ficar sem memória.
  • O modo de acesso de usuário único está disponível apenas para os usuários que possuem a conexão.
  • A Federação do Lakehouse não pode federar tabelas estrangeiras com identificadores sensíveis a maiúsculas e minúsculas para conexões do Azure Synapse ou do Redshift.

Cotas de recursos

O Azure Databricks aplica 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.

Recursos adicionais