Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como configurar 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 Ligar a bases de dados e catálogos externos.
Para se conectar a um banco de dados do Azure Synapse (SQL Data Warehouse) usando a Lakehouse Federation, você deve criar o seguinte no metastore do Azure Databricks Unity Catalog:
- Uma conexão com seu banco de dados do Azure Synapse (SQL Data Warehouse).
- Um catálogo estrangeiro que espelha o banco de dados do Azure Synapse (SQL Data Warehouse) no Unity Catalog 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 da Azure Databricks ao banco de dados.
Antes de começar
Requisitos do espaço de trabalho:
- Espaço de trabalho habilitado para o Catálogo Unity. Os espaços de trabalho criados após 9 de novembro de 2023 são ativados automaticamente para o Unity Catalog, incluindo o provisionamento automático de metastores. Não precisas de criar uma metastore manualmente a menos que o teu espaço de trabalho seja anterior à ativação automática e não tenha sido ativado para o Unity Catalog. Consulte Introdução ao 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 Standard ou Dedicated.
- 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 CONNECTIONno metastore do Unity Catalog anexado ao espaço de trabalho. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esseCREATE CONNECTIONprivilégio por defeito. - Para criar um catálogo estrangeiro, você deve ter a permissão
CREATE CATALOGno metastore e ser o proprietário da conexão ou ter o privilégio deCREATE FOREIGN CATALOGna conexão. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esseCREATE CATALOGprivilégio por defeito.
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 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.
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 Unity Catalog.
Permissões necessárias: administrador do Metastore ou usuário com o CREATE CONNECTION privilégio.
Explorador de Catálogos
- No seu espaço de trabalho do Azure Databricks, clique no
Catálogo.
- Na parte superior do painel Catálogo, clique no
ícone Adicionar e selecione Criar uma conexão no menu. - Na página Noções básicas de conexão do assistente Configurar conexão, insira um nome de conexão amigável.
- Selecione um Tipo de conexão de SQLDW.
- (Opcional) Adicione um comentário.
- Clique em Next.
- Na página de Autenticação , introduza as seguintes propriedades de ligação para a sua instância Azure Synapse:
-
Anfitrião: Por exemplo,
sqldws-demo.database.windows.net. -
Porto: Por exemplo,
1433 - User
- Password
- 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 isso definido como 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 Noções básicas do Catálogo, insira um nome para o catálogo estrangeiro. 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 Unity Catalog.
- (Opcional) Clique em Testar conexão para confirmar se ela funciona.
- Clique em Criar o catálogo.
- Na página Access, selecione os espaços de trabalho nos quais os usuários podem acessar o catálogo que você 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.
- 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, em seguida, clique no 'principal' que aparece nos resultados.
- Conceder privilégios no catálogo.
Clique em Grant:
- Especifique os Principals que terão acesso aos objetos no catálogo. Comece a digitar um 'principal' na caixa de texto e, em seguida, clique no 'principal' que aparece nos resultados.
- Selecione as predefinições de privilégio para conceder a cada principal. Todos os usuários da conta recebem
BROWSEpor padrão.- Selecione Leitor de Dados no menu suspenso para conceder privilégios
readem objetos no catálogo. - Selecione Editor de Dados no menu suspenso para conceder privilégios de
reademodifyem objetos no catálogo. - Selecione manualmente os privilégios a conceder.
- Selecione Leitor de Dados no menu suspenso para conceder privilégios
- Clique em Conceder.
- Clique em Next.
- Na página Metadados, especifique os pares chave-valor de tags. Para obter mais informações, consulte Aplicar etiquetas a objetos seguráveis do Unity Catalog.
- (Opcional) Adicione um comentário.
- Clique em 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 use o Azure Databricks Secrets em vez de strings de texto puro para valores confidenciais, como credenciais. 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 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álogo estrangeiro será incluída e você poderá ignorar esta 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 Unity Catalog. 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 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 SQL. Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar um catálogo. 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.
Explorador de Catálogos
No seu espaço de trabalho do Azure Databricks, clique no
Catálogo para abrir o Catalog Explorer.
No painel Catálogo, na parte superior, clique no ícone
Adicionar e selecione Adicionar um catálogo do menu.Como alternativa, na página de Acesso Rápido , clique no botão Catálogos e, em seguida, no botão Criar Catálogo .
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 de consultas SQL. Os itens entre parênteses 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.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Pushdowns suportados
A tabela seguinte lista as operações pushdown suportadas pelo Azure Synapse (SQL Data Warehouse), juntamente com o cálculo necessário para cada uma.
| Empurrão | Computação suportada |
|---|---|
| Filters |
|
| Contém, Começa com, Termina com |
|
| Limit |
|
| Funções matemáticas SIN, COS, FLOOR, ABS (quando ANSI está ativado) — suporte parcial, apenas expressões de filtro |
|
| Funções diversas Cast — suporte parcial, apenas expressões de filtro |
|
| Projections |
|
| Funções de cadeia de caracteres (SUPERIOR, INFERIOR, CONCAT, TRIM — suporte parcial, apenas expressões de filtro) |
|
| Aggregates (Média, Contagem, Máximo, Mínimo, StddevPop, StddevSamp, Soma, VariânciaPop, VariânciaSamp) |
|
| Operadores aritméticos (como +, -, *, %, /) — não suportado se o ANSI estiver desativado |
|
| Operadores booleanos (como =, <=>, <, <=, >, >=) |
|
| Operadores Bitwise (&, |, ^ e ~) |
|
| Classificação, quando usado com limite |
|
| Joins |
|
| 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, money, numeric, smallmoney |
DecimalType |
smallint |
ShortType |
tinyint |
ByteType |
int |
IntegerType |
bigint |
LongType |
real |
FloatType |
float |
DoubleType |
char, nchar, ntextnvarchar, , text, uniqueidentifier, varchar,xml |
StringType |
binary, geography, geometry, image, timestamp, udt, varbinary |
BinaryType |
bit |
BooleanType |
date |
DateType |
datetime, datetime2, smalldatetime, time |
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.