O que é a Federação Lakehouse

Importante

Esse recurso está em uma versão prévia.

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 Warehouses SQL devem ser Pro ou Sem Servidor.

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.

Permissões necessárias: administrador ou usuário do metastore com o privilégio de CREATE CONNECTION.

Explorador do Catálogo

  1. No espaço de trabalho do Azure Databricks, clique em Ícone do catálogoCatálogo.

  2. No painel esquerdo, expanda o menu Dados Externos e selecione Conexões.

  3. Clique em Criar conexão.

  4. Insira um nome de conexão simples.

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

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

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

  8. (Opcional) Adicione um comentário.

  9. Clique em Criar.

Sql

Execute o comando a seguir em um notebook ou no editor de SQL do Databricks. 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 Explorador de Catálogos, o comando SQL CREATE FOREIGN CATALOG em um notebook do Azure Databricks ou o editor de consulta do Databricks SQL.

Permissões necessárias: permissão de CREATE CATALOG no metastore e a propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.

Explorador do Catálogo

  1. No espaço de trabalho do Azure Databricks, clique em Ícone do catálogoCatálogo.

  2. Clique no botão Criar Catálogo.

  3. Na caixa de diálogo Criar um novo catálogo, insira um nome para o catálogo e selecione um Tipo de Estrangeiro.

  4. Selecione a Conexão que fornece acesso ao banco de dados que você deseja espelhar como um do Catálogo do Unity.

  5. Insira o nome do Banco de Dados que você deseja espelhar como um catálogo.

    Os requisitos diferem dependendo da fonte de dados:

    • O MySQL usa um namespace de duas camadas e, portanto, não requer um nome de banco de dados.
    • Para conexões com um catálogo em outro workspace do Databricks, insira o nome do Catálogo do Databricks em vez de um nome de banco de dados.
  6. Clicar em Criar.

Sql

  1. Execute o comando SQL a seguir em um notebook ou no editor de SQL do Databricks. 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;

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 a lista de regras de nomenclatura e limitações em Limitações do Catálogo do Unity.

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

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