Executar consultas federadas no Microsoft Azure Synapse
Este artigo descreve como set a Lakehouse Federation para executar consultas federadas em dados do Azure Synapse (SQL Data Warehouse) que não são gerenciados pelo Azure Databricks. Para saber mais sobre a Lakehouse Federation, consulte O que é Lakehouse Federation?.
Para se conectar a um banco de dados do Azure Synapse (SQL Data Warehouse) usando a Lakehouse Federation, você deve criar o seguinte em seu metastore do Azure Databricks Unity Catalog:
- Uma conexão com seu banco de dados do Azure Synapse (SQL Data Warehouse).
- Um estrangeiro catalog que espelha o seu banco de dados Azure Synapse (SQL Data Warehouse) no Unity Catalog para que possa utilizar a sintaxe de consulta do Unity Catalog e as ferramentas de governança de dados para gerenciar o acesso dos utilizadores do Azure Databricks ao banco de 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 Shared ou Single user.
- 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.
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.
Na página Noções básicas de conexão do assistente de conexão Set-up, insira um nome amigável de conexão .
um de tipo de conexão de SQLDW .(Opcional) Adicione um comentário.
Clique Avançar.
Na página de Autenticação, insira as seguintes propriedades de conexão para sua instância do Azure Synapse:
-
Anfitrião: Por exemplo,
sqldws-demo.database.windows.net
. -
Porto: Por exemplo,
1433
- Utilizador
- Palavra-passe
- Certificado do servidor confiável: Esta opção é desmarcada por padrão. Quando selecionada, a camada de transporte usa SSL para criptografar o canal e ignora a cadeia de certificados para validar a confiança. Deixe esse set para o padrão, a menos que você tenha uma necessidade específica de ignorar a validação de confiança.
-
Anfitrião: Por exemplo,
Clique em Criar conexão.
Na página de noções básicas do Catalog, insira um nome para o elemento estrangeiro catalog. Um banco de dados catalog externo reflete um banco de dados em um sistema de dados externo, permitindo que você consulte e gerencie o acesso aos dados nesse banco de dados usando o Azure Databricks e o Unity Catalog.
(Opcional) Clique em Testar conexão para confirmar se ela funciona.
Clique Criar catalog.
Na página do
Access, os espaços de trabalho nos quais os usuários podem acessar o que você criou. Você pode selectdar acesso a todos os espaços de trabalhoou clicar em Atribuir a espaços de trabalho, selecionar select os espaços de trabalho e, em seguida, clicar em Atribuir. Altere o Proprietário que poderá gerenciar o acesso a todos os objetos no catalog. Comece a digitar um 'principal' na caixa de texto e, em seguida, clique no 'principal' que aparece nos resultados.
Grant Privilégios no catalog. Clique Grant:
- Especifique os Principais que terão acesso aos objetos no catalog. Comece a digitar um principal na caixa de texto e, em seguida, clique no principal nos resultados.
-
Select as predefinições de privilégio para grant a cada utilizador principal. Todos os usuários da conta recebem
BROWSE
por padrão.-
Select
Leitor de Dados no menu suspenso para definir grant
read
privilégios em objetos no catalog. -
Select
Editor de Dados no menu suspenso para grant
read
emodify
privilégios em objetos no catalog. - Manualmente select os privilégios para grant.
-
Select
Leitor de Dados no menu suspenso para definir grant
- Clique em Grant.
Clique Avançar.
Na página de Metadados , especifique pares chave-valor de etiquetas governadas.
(Opcional) Adicione um comentário.
Clique Salvar.
SQL
Execute o seguinte comando em um bloco de anotações ou no editor de consultas Databricks SQL.
CREATE CONNECTION <connection-name> TYPE sqldw
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
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 sqldw
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 Gerenciamento de segredos.
Criar uma catalog estrangeira
Nota
Se você usar a interface do usuário para criar uma conexão com a fonte de dados, a criação de catalog estrangeira será incluída e você poderá ignorar esta etapa.
Um banco de dados catalog externo reflete um banco de dados em um sistema de dados externo, permitindo que você consulte e gerencie o acesso aos dados nesse banco de dados usando o Azure Databricks e o Unity Catalog. Para criar um catalogexterno, use uma conexão com a fonte de dados que já foi definida.
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 SQL.
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 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.
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.
Como alternativa, na página Acesso rápido, clique no botão Catalogs e, em seguida, clique no botão Criar catalog.
Siga as instruções para criar o catalogs estrangeiro no Criar catalogs.
SQL
Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL. Os itens entre parênteses são opcionais. Substitua o marcador de posição values:
-
<catalog-name>
: Nome do catalog no Azure Databricks. -
<connection-name>
: O objeto de conexão que especifica a fonte de dados, o caminho e acesso ao credentials. -
<database-name>
: Nome do banco de dados que você deseja espelhar como um catalog no Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Pushdowns suportados
As seguintes flexões são suportadas:
- Filtros
- Projeções
- Limit
- Agregados (Média, Contagem, Max, Min, StddevPop, StddevSamp, Soma, VarianceSamp)
- Funções (Aritmética e outras funções diversas, como Alias, Cast, SortOrder)
- Ordenar
As seguintes flexões não são suportadas:
- Associações
- Funções do Windows
Mapeamentos de tipo de dados
Quando você lê do Synapse / SQL Data Warehouse para o Spark, os tipos de dados são mapeados da seguinte maneira:
Tipo de sinapse | Tipo de faísca |
---|---|
decimal, dinheiro, numérico, smallmoney | Tipo decimal |
smallint | Tipo curto |
tinyint | Tipo de Byte |
número inteiro | Tipo inteiro |
bigint | Tipo Longo |
real | Tipo de flutuação |
flutuante | Tipo Duplo |
char, nchar, ntext, nvarchar, texto, uniqueidentifier, varchar, xml | StringType |
binário, geografia, geometria, imagem, timestamp, udt, varbinary | BinaryType |
bit | BooleanType |
data | Tipo de Data |
datetime, datetime, smalldatetime, hora | TimestampType/TimestampNTZType* |
*Quando você lê a partir do Synapse / SQL Data Warehouse (SQLDW), o SQLDW datetimes
é mapeado para o Spark TimestampType
if preferTimestampNTZ = false
(padrão). SQLDW datetimes
são mapeados para TimestampNTZType
if preferTimestampNTZ = true
.