Pular para o conteúdo principal

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.

Diagrama geral da federação de consultas

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:

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égio CREATE 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.

nota

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.

  1. Em Databricks workspace, clique em Ícone de dados. Catalog .

  2. Na parte superior do painel Catálogo , clique no ícone Ícone de adicionar ou ícone de mais 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 .

  3. Insira um nome de conexão fácil de lembrar.

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

  5. (Opcional) Adicione um comentário.

  6. Clique em Avançar .

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

  8. Clique em Criar conexão .

  9. Insira um nome para o catálogo estrangeiro.

  10. (Opcional) Clique em Testar conexão para confirmar se está funcionando.

  11. Clique em Criar catálogo .

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

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

  14. Conceda privilégios no catálogo. Clique em Conceder :

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

    2. 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 e modify aos objetos no catálogo.
      • Selecione manualmente os privilégios a serem concedidos.
    3. Clique em Conceder .

    4. Clique em Avançar .

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

    6. (Opcional) Adicione um comentário.

    7. Clique em Salvar .

Para obter informações sobre como gerenciar conexões existentes, consulte gerenciar conexões para federação lakehouse.

Crie um catálogo estrangeiro

nota

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.

  1. No seu Databricks workspace, clique em Ícone de dados. Catalog para abrir o Catalog Explorer.

  2. Na parte superior do painel Catálogo , clique no ícone Ícone de adicionar ou ícone de mais 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 .

  3. Siga as instruções para criar catálogos estrangeiros em Criar catálogos.

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:

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

Recurso adicional