Partilhar via


Executar consultas federadas em outro espaço de trabalho do Databricks

Este artigo descreve como configurar a Lakehouse Federation para executar consultas federadas em dados Databricks em outro espaço de trabalho Databricks. Para saber mais sobre a Lakehouse Federation, consulte O que é Lakehouse Federation?.

Importante

O Databricks-to-Databricks Lakehouse Federation é uma boa ferramenta para executar consultas em dados gerenciados pelo metastore Hive ou AWS Glue de outro espaço de trabalho do Databricks. Para a maioria dos outros cenários, outros fluxos de trabalho do Azure Databricks são mais eficientes:

  • Se os espaços de trabalho do Azure Databricks compartilharem o mesmo metastore do Catálogo Unity, você poderá gerenciar consultas entre espaços de trabalho usando consultas padrão do Catálogo Unity e ferramentas de governança de dados.
  • Se você quiser acesso somente leitura dados em um espaço de trabalho Databricks anexado a um metastore diferente do Catálogo Unity, seja em sua conta do Azure Databricks ou não, o Compartilhamento Delta é uma escolha melhor.

Não há necessidade de criar a Lakehouse Federation em nenhum desses cenários.

Para se conectar a um catálogo Databricks em outro espaço de trabalho usando o Lakehouse Federation, você deve criar o seguinte no metastore do Azure Databricks Unity Catalog:

  • Um cluster ou armazém SQL em um espaço de trabalho Databricks.
  • Uma conexão com o cluster ou SQL warehouse.
  • Um catálogo estrangeiro no seu metastore do Unity Catalog que espelha o outro catálogo Databricks acessível a partir do cluster ou do armazém SQL, para que possa usar a sintaxe de consulta do Unity Catalog e as ferramentas de governança de dados para gerir o acesso dos utilizadores do Azure Databricks aos dados.

Antes de começar

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 recurso de computação para os sistemas de banco de dados de destino. Consulte Recomendações de rede para a Lakehouse Federation.
  • A computação do Azure Databricks deve usar o Databricks Runtime 13.3 LTS ou superior e modo de acesso partilhado ou modo de acesso exclusivo a utilizador.
  • Os armazéns SQL 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 de CREATE FOREIGN CATALOG na conexão.

Os requisitos de permissão adicionais são especificados em cada seção baseada em tarefas a seguir.

Você também deve ter um cluster ativo ou um SQL warehouse no espaço de trabalho do Azure Databricks que está usando para configurar a conexão.

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 CREATE CONNECTION 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 POST /api/2.1/unity-catalog/connections e comandos do Unity Catalog.

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

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.

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

  3. Na página Noções básicas de conexão do assistente Configurar de conexão, insira um amigável Nome da conexão.

  4. Selecione um Tipo de conexão de Databricks.

  5. (Opcional) Adicione um comentário.

  6. Clique Avançar.

  7. Na página de Autenticação, insira as seguintes propriedades de conexão para a outra instância do Databricks:

    • Host: Nome da instância do espaço de trabalho. Para saber como obter o nome da instância do espaço de trabalho, consulte Obter identificadores para objetos do espaço de trabalho.
    • Token de acesso pessoal: um token de acesso pessoal do Azure Databricks que permite o acesso ao espaço de trabalho de destino. Para saber como obter um token, consulte autenticação de token de acesso pessoal do Azure Databricks. Para conexões, o Databricks recomenda o uso de um token de acesso pessoal para um principal de serviço.
    • Caminho HTTP: O caminho HTTP para o seu armazém SQL. Para obter o caminho, vá para SQL > SQL Warehouses na barra lateral, selecione o SQL warehouse, vá para o separador Detalhes da conexão e copie o valor do caminho HTTP.
  8. Clique em Criar conexão.

  9. Na página Noções básicas do catálogo, insira o nome do catálogo no outro espaço de trabalho do Azure Databricks que pode ser mapeado para um objeto de catálogo neste metastore.

  10. (Opcional) Clique em Testar conexão para confirmar se ela funciona.

  11. Clique Criar catálogo.

  12. Na página Access , selecione os espaços de trabalho onde os utilizadores podem aceder ao catálogo que criou. Você pode selecionar Todos os espaços de trabalho têm acesso, ou clicar em Atribuir a espaços de trabalho, selecionar os espaços de trabalho e, em seguida, clicar em Atribuir.

  13. Altere o Proprietário que poderá gerir o acesso a todos os objetos no catálogo. Comece a digitar um principal na caixa de texto e clique no principal nos resultados apresentados.

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

    1. Especifique os Principais que terão acesso aos objetos no catálogo. Comece a digitar um principal na caixa de texto e clique no principal nos resultados apresentados.
    2. Selecione as predefinições de privilégio para conceder a cada principal. Todos os usuários da conta recebem BROWSE por padrão.
      • Selecione Leitor de Dados no menu suspenso para conceder privilégios read sobre os objetos no catálogo.
      • Selecione Editor de Dados no menu suspenso para conceder privilégios read e modify em objetos no catálogo.
      • Selecione manualmente os privilégios a conceder.
    3. Clique Conceder.
  15. Clique Avançar.

  16. Na página de Metadados , especifique os pares de chave-valor das etiquetas. Para obter mais informações, consulte Aplicar tags a objetos protegíveis do Unity Catalog.

  17. (Opcional) Adicione um comentário.

  18. Clique Salvar.

SQL

Execute o seguinte comando em um bloco de anotações ou no editor de consultas Databricks SQL, substituindo o seguinte:

  • <connection-name>: Nome amigável para a conexão que você está criando.
  • <workspace-instance>: A instância do espaço de trabalho de destino. Para saber como obter o nome da instância do espaço de trabalho, consulte Obter identificadores para objetos do espaço de trabalho.
  • <sql-warehouse-path>: O caminho HTTP para o seu armazém SQL. Para obter o caminho, vá para SQL SQL Warehouses na barra lateral, selecione o SQL warehouse, vá para a guia Detalhes da conexão e copie o valor para caminho HTTP.
  • <personal-access-token>: Um token de acesso pessoal do Azure Databricks que permite o acesso ao espaço de trabalho de destino. Para saber como obter um token, consulte autenticação com token de acesso pessoal do Azure Databricks. Para conexões, a Databricks recomenda que se use o token de acesso pessoal de uma entidade de serviço.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

Recomendamos a utilização dos segredos do Azure Databricks em vez de cadeias de texto simples para valores sensíveis, como credenciais. Por exemplo:

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

Para obter informações sobre como configurar segredos, consulte Gerenciamento de segredos.

Criar um catálogo estrangeiro

Nota

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

Um catálogo estrangeiro espelha um catálogo no espaço de trabalho externo do Databricks para que você possa consultar e gerenciar o acesso aos dados nesse catálogo externo do Databricks como se fosse um catálogo em seu próprio workspsace. Para criar um catálogo estrangeiro, use uma conexão com o espaço de trabalho externo Databricks que já foi definido.

Para criar um catálogo estrangeiro, você pode usar o Gerenciador de Catálogos ou o comando CREATE FOREIGN CATALOG SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL. Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar um catálogo. Veja POST /api/2.1/unity-catalog/catalogs e comandos Unity Catalog.

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

  1. No seu espaço de trabalho do Azure Databricks, clique ícone do Catálogo para abrir o Explorador de Catálogo.

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

  3. 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 editor SQL Databricks. Os itens entre parênteses são opcionais. Substitua os valores de espaço reservado:

  • <catalog-name>: Nome do catálogo estrangeiro que você está criando.
  • <connection-name>: O objeto de conexão que especifica a fonte de dados, o caminho e as credenciais de acesso.
  • <external-catalog-name>: Nome do catálogo no espaço de trabalho externo Databricks que você está espelhando.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Pushdowns suportados

Os seguintes pushdowns são suportados em todos os cálculos:

  • Filtros
  • Projeções
  • Limite
  • Funções: apenas expressões de filtro são suportadas (funções de cadeia de caracteres, funções matemáticas, dados, funções de carimbo de data/hora e carimbo de data/hora e outras funções diversas, como Alias, Cast, SortOrder).

Os seguintes pushdowns são suportados no Databricks Runtime 13.3 LTS e superior e na computação do SQL warehouse:

  • Agregados
  • Os seguintes operadores booleanos: =, <, <=, >, >=, <=>
  • As seguintes funções matemáticas (não suportadas se o ANSI estiver desativado): +, -, *, %, /
  • Os seguintes operadores diversos: ^, |, ~
  • Classificação, quando usado com limite

As seguintes flexões não são suportadas:

  • Associações
  • Funções do Windows