Compartilhar via


O que é federação de consulta?

Com a federação de consulta, as consultas são transferidas para o banco de dados externo usando APIs JDBC. A consulta é executada no Databricks e usando computação remota. A federação de consulta é usada para fontes como MySQL, PostgreSQL, BigQuery, Redshift, Teradata e muito mais.

Diagrama de visão geral da federação de consulta

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 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 de ETL ou relatórios.
  • Suporte a 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.

A federação de consulta destina-se a casos de uso nos quais:

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

Federação de consulta vs. Lakeflow Connect

A federação de consulta permite que você consulte fontes de dados externas sem mover seus dados. O Databricks recomenda a ingestão usando conectores gerenciados porque eles são dimensionados para acomodar grandes volumes de dados, consultas de baixa latência e limites de API de terceiros. No entanto, talvez você queira consultar seus dados sem migrá-los. Quando você tiver uma opção entre conectores de ingestão gerenciada e federação de consulta, escolha federação de consulta para relatórios ad hoc ou provas de conceito em seus pipelines de ETL.

Visão geral da configuração da federação de consulta

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 de segurança no Catálogo do Unity que espelha um banco de dados em um sistema de dados externo, permitindo que você realize consultas de 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 consulta dá suporte a conexões com as seguintes fontes:

Requisitos de conexão

Requisitos de área de trabalho:

  • Espaço de trabalho habilitado para o Unity Catalog.

Requisitos de computação:

  • Conectividade de rede do recurso de computação para os sistemas de banco de dados de destino. Confira Recomendações de rede para a Federação de Lakehouse.
  • A computação do Azure Databricks deve usar o Databricks Runtime 13.3 LTS ou superior e modo de acesso Standard ou Dedicado.
  • Os sql warehouses devem ser profissionais ou sem servidor 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 privilégio de CREATE CONNECTION no metastore do Unity Catalog anexado ao espaço de trabalho.
  • Para criar um catálogo estrangeiro, você deve ter a permissão CREATE CATALOG no metastore e ser o proprietário da conexão ou ter o privilégio CREATE FOREIGN CATALOG na conexão.

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 comando SQL CREATE CONNECTION em um notebook do Azure Databricks ou no editor de consultas SQL do Databricks.

Note

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

Gerenciador de Catálogos

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

  2. Na parte superior do painel Catálogo, clique no ícone Ícone de adição ou maisAdicionar 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 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 Próximo.

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

  8. Clique em Criar conexão.

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

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

  11. Clique em Criar catálogo.

  12. Selecione os workspaces nos quais os usuários podem acessar o catálogo que você criou. Você pode selecionar Todas as áreas de trabalho têm acesso ou clicar em Atribuir aos workspaces, selecionar as áreas de trabalho e então clicar em Atribuir.

  13. Altere o Proprietário que poderá gerenciar o acesso a todos os objetos do catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.

  14. Conceda Privilégios no catálogo. Selecione o botão Conceder:

    1. Especifique as Entidades de segurança que terão acesso aos objetos do catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
    2. Selecione as Predefinições de privilégio a conceder a cada usuário. Todos os usuários da conta recebem BROWSE como padrão.
      • 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 em objetos no catálogo.
      • Selecione manualmente os privilégios a serem concedidos.
    3. Selecione Conceder.
    4. Clique em Próximo.
    5. Na página Metadados, especifique os pares chave-valor dos rótulos. Para obter mais informações, consulte Aplicar etiquetas a objetos securitizáveis do Catálogo Unity.
    6. (Opcional) Adicione um comentário.
    7. Clique em Salvar.

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 como configurar segredos, consulte a seção Gerenciamento 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

Note

Se você usar a interface do usuário para criar uma conexão com a fonte de dados, a criação de catálogos estrangeiros será incluída e você poderá ignorar essa etapa.

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 estrangeiro, você pode usar o Explorador de Catálogos ou o comando SQL CREATE FOREIGN CATALOG em um notebook do Azure Databricks ou no editor de consultas SQL. 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: permissão de CREATE CATALOG no metastore e propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.

Gerenciador de Catálogos

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo para abrir o Gerenciador de Catálogos.

  2. Na parte superior do painel Catálogo , clique no ícone Adicionar ou adicionar íconeAdicionar dados e selecione Criar 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.

Carregar os dados de tabelas estrangeiras com exibições materializadas

O Databricks recomenda o carregamento de dados externos usando a federação de consultas ao criar visões materializadas. Confira Exibições materializadas.

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

Limitations

  • As consultas são somente leitura.

    A única exceção é quando a Federação lakehouse é usada para federar o metastore de Hive herdado de um workspace (federação de catálogo). Tabelas estrangeiras nesse cenário são graváveis. Veja o que significa gravar em um catálogo estrangeiro em um metastore de Hive federado?.

  • 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 a lógica de enfileiramento e dimensionamento automático.

  • 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. Se isso causar colisões de nome, o Databricks não poderá garantir qual objeto é importado para o catálogo estrangeiro.

  • Para cada tabela estrangeira referenciada, o 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 Databricks em um único fluxo. Se o conjunto de resultados for muito grande, o executor poderá ficar sem 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 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 impõe 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