Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página descreve como configurar a Federação do Lakehouse para executar consultas federadas em dados PostgreSQL que não são gerenciados pelo Azure Databricks. Para saber mais sobre a Federação Lakehouse, veja o que é a Federação Lakehouse?
Para se conectar a um banco de dados Executar consultas no PostgreSQL usando a Lakehouse Federation, você precisa criar o seguinte no metastore do Catálogo do Unity do Azure Databricks:
- Uma conexão com seu banco de dados Executar consultas no PostgreSQL.
- Um catálogo estrangeiro que espelha seu banco de dados Executar consultas no PostgreSQL no Catálogo do Unity para que você possa usar a sintaxe de consulta do Catálogo do Unity e as ferramentas de governança de dados para gerenciar o acesso do usuário do Azure Databricks ao banco de dados.
Antes de começar
Requisitos de área de trabalho:
- Workspace habilitado para o Catálogo do Unity.
Requisitos de computação:
- Conectividade de rede do recurso de computação para os sistemas de banco de dados de destino. Confira Recomendações de rede para a Federação de Lakehouse.
- A computação do Azure Databricks deve usar o Databricks Runtime 13.3 LTS ou superior e modo de acesso Standard ou Dedicado.
- Os sql warehouses 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 Catálogo do Unity anexado ao workspace. - Para criar um catálogo estrangeiro, você precisa ter a permissão de
CREATE CATALOGno metastore e ser o proprietário da conexão ou ter o privilégio deCREATE FOREIGN CATALOGna conexão.
Requisitos de permissão adicionais são especificados em cada seção baseada em tarefa 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 Explorador do Catálogo ou o comando SQL CREATE CONNECTION em um notebook do Azure Databricks, ou o editor de consulta do Databricks SQL.
Note
Você também pode usar a 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 Catálogo do Unity.
Permissões necessárias: administrador ou usuário do metastore com o privilégio de CREATE CONNECTION.
Gerenciador de Catálogos
No workspace do Azure Databricks, clique no
Catálogo.
Na parte superior do painel Catálogo, clique no í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á até a guia Conexões e clique em Criar conexão.
Na página Noções básicas sobre a conexão do assistente Configurar conexão, insira um Nome da conexão amigável.
Selecione um Tipo de Conexão do PostgreSQL.
(Opcional) Adicione um comentário.
Clique em Próximo.
Na página Autenticação , insira as seguintes propriedades de conexão para sua instância do PostgreSQL.
-
Host: por exemplo,
postgres-demo.lb123.us-west-2.rds.amazonaws.com -
Porta: por exemplo,
5432 -
Usuário: por exemplo,
postgres_user -
Senha: por exemplo,
password123
-
Host: por exemplo,
Clique em Criar conexão.
Na página Noções básicas sobre o 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 Catálogo do Unity.
(Opcional) Clique em Testar conectividade para confirmar se está funcionando.
Clique em Criar catálogo.
Na página Access, selecione os workspaces nos quais os usuários podem acessar o catálogo que você criou. Você pode selecionar Todos os workspaces têm acesso ou clicar em Atribuir a workspaces, selecionar os workspaces e clicar em Atribuir.
Altere o Proprietário que poderá gerenciar o acesso a todos os objetos do catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
Conceda Privilégios no catálogo. Selecione o botão Conceder:
- Especifique as Entidades de segurança que terão acesso aos objetos no catálogo. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
- Selecione as Predefinições de privilégio a conceder a cada usuário. Todos os usuários da conta recebem
BROWSEcomo 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
reademodifyem objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
- Selecione Leitor de Dados no menu suspenso para conceder privilégios
- Selecione Conceder.
Clique em Próximo.
Na página Metadados, especifique os pares chave-valor das tags. Para obter mais informações, consulte Aplicar etiquetas a objetos securitizáveis do Catálogo Unity.
(Opcional) Adicione um comentário.
Clique em Salvar.
SQL
Execute o comando a seguir em um notebook ou no editor de SQL do Databricks.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Recomendamos usar segredos do Azure Databricks em vez de cadeias de caracteres de texto não criptografado para valores confidenciais, como credenciais. Por exemplo:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Para obter informações sobre configuração de segredos, confira Gestão 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álogos estrangeiros será incluída e você poderá ignorar essa 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 Catálogo do Unity. 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 Explorador de Catálogos ou o comando SQL CREATE FOREIGN CATALOG em um notebook do Azure Databricks ou no editor de consultas SQL. Você também pode usar a 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 do Catálogo do Unity.
Permissões necessárias: permissão de CREATE CATALOG no metastore e a propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.
Gerenciador de Catálogos
No workspace do Azure Databricks, clique no
Catálogo para abrir o Gerenciador de Catálogos.
Na parte superior do painel Catálogo, clique no ícone
Adicionar e selecione Adicionar um catálogo do menu.Como alternativa, na página Acesso rápido, clique no botão Catálogos e depois no botão Criar catálogo.
Siga as instruções para criar catálogos estrangeiros em Criar catálogos.
SQL
Execute o comando SQL a seguir em um notebook ou editor de consultas SQL. Os itens entre colchetes 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 com suporte
Os seguintes pushdowns são compatíveis com toda a computação:
- Filters
- Projections
- Limit
- Funções: parcial, somente para expressões de filtro. (Funções de cadeia de caracteres, funções matemáticas e outras funções diversas, como Alias, Cast, SortOrder)
Os seguintes pushdowns têm suporte para o Databricks Runtime 13.3 LTS e versões posteriores e para SQL warehouses:
- As seguintes funções de agregação: MIN, MAX, COUNT, SUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, GREATEST, LEAST, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
- As seguintes funções booleanas: =, <, <, =>, >=, <=>
- As seguintes funções matemáticas (sem suporte se o ANSI estiver desabilitado): +, -, *, %, /
- Operadores diversos | e ~
- Classificação, quando usada com limite
Não há suporte para os seguintes pushdowns:
- Joins
- Funções do Windows
Mapeamentos de tipo de dados
Quando você lê do PostgreSQL para o Spark, os tipos de dados são mapeados da seguinte maneira:
| Tipo postgreSQL | Tipo de Spark |
|---|---|
| numeric | DecimalType |
| int2 | ShortType |
| int4 (se não estiver assinado) | IntegerType |
| int8, oid, xid, int4 (se assinado) | LongType |
| float4 | FloatType |
| precisão dupla, float8 | DoubleType |
| char | CharType |
| name, varchar, tid | VarcharType |
| bpchar, caracteres variáveis, json, dinheiro, ponto, super, texto | StringType |
| bytea, geometria, varbyte | BinaryType |
| bit, bool | BooleanType |
| date | DateType |
| tabstime, time, time with time zone, timetz, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamp without time zone* | TimestampType/TimestampNTZType |
| Tipo de matriz Postgresql** | ArrayType |
*Quando você lê do Postgresql, o Timestamp Postgresql é mapeado para TimestampType Spark se preferTimestampNTZ = false (padrão). O Timestamp Postgresql será mapeado para TimestampNTZType se preferTimestampNTZ = true.
**Há suporte para tipos de matriz limitados.