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 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 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 Ativação automática do 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 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
As seguintes flexões são suportadas:
- Filters
- Projections
- Limit
- Agregados (Média, Contagem, Max, Min, StddevPop, StddevSamp, Soma, VarianceSamp)
- Funções (Aritmética e outras funções diversas, como Alias, Cast, SortOrder)
- Sorting
As seguintes flexões não são suportadas:
- 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, dinheiro, numérico, smallmoney | DecimalType |
| smallint | ShortType |
| tinyint | ByteType |
| int | IntegerType |
| bigint | LongType |
| real | FloatType |
| float | DoubleType |
| char, nchar, ntext, nvarchar, texto, uniqueidentifier, varchar, xml | StringType |
| binário, geografia, geometria, imagem, timestamp, udt, varbinary | BinaryType |
| bit | BooleanType |
| date | DateType |
| datetime, datetime2, 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.