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 aos 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 em seu metastore do Unity Catalog que espelha o outro catálogo Databricks acessível a partir do cluster ou do SQL warehouse para que você possa usar a sintaxe de consulta do Catálogo Unity e as ferramentas de governança de dados para gerenciar o acesso do usuário 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 cluster Databricks Runtime ou SQL warehouse para os sistemas de banco de dados de destino. Consulte Recomendações de rede para a Lakehouse Federation.
  • 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 armazéns SQL devem ser Pro ou Serverless 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 CREATE CONNECTION privilégio no metastore do Unity Catalog anexado ao espaço de trabalho.
  • Para criar um catálogo estrangeiro, você deve ter a CREATE CATALOG permissão no metastore e ser o proprietário da conexão ou ter o CREATE FOREIGN CATALOG privilégio 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 CREATE CONNECTION comando SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL.

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 em Ícone do catálogo Catá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. Insira um nome de conexão amigável.

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

  5. 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.
    • 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 a guia Detalhes da conexão e copie o valor para o caminho HTTP.
    • 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 uma entidade de serviço.
  6. (Opcional) Clique em Testar conexão para confirmar se ela funciona.

  7. (Opcional) Adicione um comentário.

  8. Clique em Criar.

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 o 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 de token de acesso pessoal do Azure Databricks. Para conexões, o Databricks recomenda que você 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 que você use segredos do Azure Databricks em vez de cadeias de caracteres de texto sem formatação para valores confidenciais, 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

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 CREATE FOREIGN CATALOG comando SQL em um bloco de anotações do Azure Databricks ou o editor de consultas Databricks SQL.

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 espaço de trabalho do Azure Databricks, clique em Ícone do catálogo Catálogo para abrir o Gerenciador de Catálogos.

  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