Executar consultas federadas em outro espaço de trabalho do Databricks
Este artigo descreve como set 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 Unity Catalog, você poderá gerenciar consultas entre espaços de trabalho usando consultas padrão do Unity Catalog 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 Unity Catalog diferente, seja em sua conta do Azure Databricks ou não, o Delta Sharing é uma escolha melhor.
Não há necessidade de set a Lakehouse Federation em nenhum desses cenários.
Para se conectar a um catalog Databricks em outro espaço de trabalho usando a Lakehouse Federation, você deve criar o seguinte em seu 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.
- Uma
estrangeira em seu metastore Unity que espelha os outros Databricks acessíveis a partir do cluster ou do SQL warehouse para que você possa usar a sintaxe de consulta do 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 ativado para Unity Catalog.
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 Unity Catalog anexado ao espaço de trabalho. - Para criar um catalogestrangeiro, você deve ter a permissão
CREATE CATALOG
no metastore e ser o proprietário da conexão ou ter o privilégio deCREATE 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 credentials 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
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 Unity Catalog.
Permissões necessárias: administrador do Metastore ou usuário com o CREATE CONNECTION
privilégio.
Catalog Explorer
No seu espaço de trabalho do Azure Databricks, clique Catalog.
Na parte superior do painel Catalog, clique no ícone ícone Adicionar e selectAdicionar uma conexão no menu.
Como alternativa, na página Acesso rápido, clique no botão Dados externos >, vá para a guia Connections e clique em Criar conexão .
Insira um nome de conexão amigável.
uma do tipo Conexão do Databricks .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 get o nome da instância do espaço de trabalho, consulte Get identificadores para objetos do espaço de trabalho.
-
Caminho HTTP: O caminho HTTP para o seu armazém SQL. Para
o caminho, vá para SQL SQL Warehouses na barra lateral, o SQL warehouse, vá para a guia Detalhes da conexão e copie o valor para 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 get um token, consulte autenticação de token de acesso pessoal do Azure Databricks. Para connections, a Databricks recomenda o uso de um token de acesso pessoal para um principal de serviço.
(Opcional) Clique em Testar conexão para confirmar se ela funciona.
(Opcional) Adicione um comentário.
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 get o nome da instância do espaço de trabalho, consulte Get identificadores para objetos do espaço de trabalho. -
<sql-warehouse-path>
: O caminho HTTP para o seu armazém SQL. Para get o caminho, vá para SQL Warehouses na barra lateral >, selecione o SQL warehouse select, vá para a guia Detalhes da conexão, e copie o valor do 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 get um token, consulte autenticação de token de acesso pessoal do Azure Databricks. Para o connections, o Databricks recomenda utilizar o token de acesso pessoal de um principal 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 o Azure Databricks segredos em vez de cadeias de caracteres de texto sem formatação para values confidenciais como credentials. 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(a) catalog estrangeiro(a)
Um catalog estrangeiro espelha um catalog no espaço de trabalho externo Databricks para que possas consultar e gerir o acesso a dados nesse Databricks externo catalog como se fosse um catalog no teu próprio espaço de trabalho. Para criar um catalogexterno, use uma conexão com o espaço de trabalho externo Databricks que já foi previamente configurado.
Para criar um catalogexterno, você pode usar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG
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 um catalog. Consulte POST /api/2.1/unity-catalog/catalogs e Catalog comandos Unity.
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.
Catalog Explorer
No seu espaço de trabalho do Azure Databricks, clique Catalog para abrir o Catalog Explorer.
Na parte superior do painel Catalog, clique no ícone Adicionar ícone Adicionar e selectAdicionar um catalog no menu.
Na página Acesso rápido, como alternativa, clique no botão Catalogs e depois clique no botão Criar catalog.
Siga as instruções para criar foreign catalogs no Criar catalogs.
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 o marcador values:
-
<catalog-name>
: Nome da catalog estrangeira que você está criando. -
<connection-name>
: O objeto de conexão que especifica a fonte de dados, o caminho e o acesso credentials. -
<external-catalog-name>
: Nome do catalog no espaço de trabalho externo Databricks que estás a espelhar.
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
- Limit
- 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 usada com limit
As seguintes flexões não são suportadas:
- Associações
- Funções do Windows