Executar consultas federadas no Oracle
Importante
Este recurso está no
Este artigo descreve como set a Lakehouse Federation para executar consultas federadas em dados Oracle que não são gerenciados pelo Azure Databricks. Para saber mais sobre a Lakehouse Federation, consulte O que é Lakehouse Federation?.
Para se conectar ao seu banco de dados Oracle usando o Lakehouse Federation, você deve criar o seguinte em seu metastore do Azure Databricks Unity Catalog:
- Uma conexão ao seu banco de dados Oracle.
- Um catalog externo que espelha o banco de dados Oracle no Unity Catalog para que você possa usar a sintaxe de consulta do Unity Catalog e ferramentas de governança de dados para gerir o acesso dos utilizadores do Azure Databricks ao banco de dados.
Antes de começar
Antes de começar, certifique-se de que cumpre os requisitos desta secção.
Requisitos do Databricks
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 as recomendações de rede para a Lakehouse Federation.
- A computação do Azure Databricks deve usar o Databricks Runtime 16.1 ou superior e modo de acesso Compartilhado ou modo de acesso de usuário único .
- Os armazéns SQL devem ser profissionais ou sem servidor e devem usar 2024.50 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, deve-se ter a permissão
CREATE CATALOG
no metastore e ser o proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOG
na conexão.
Os requisitos de permissão adicionais são especificados em cada seção baseada em tarefas a seguir.
Requisitos do Oracle
- Criptografia de rede nativa do lado do servidor habilitada (nível de
ACCEPTED
no mínimo). Consulte Configurando a criptografia de dados de rede na documentação do Oracle.
Criar uma conexão do Azure Databricks
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.
Observação
Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte POST comandos /api/2.1/unity-catalog/connections e Unity Catalog.
Permissões necessárias: administrador ou usuário da Metastore com o privilégio CREATE CONNECTION
.
Catalog Explorer
- No espaço de trabalho do Azure Databricks, clique
Catalog.
- No painel esquerdo, expanda o menu Dados Externos e selectConnections.
- Clique em Criar conexão.
- Na página Noções básicas de conexão do assistente de conexão Set para cima, insira um nome de conexão fácil de usar.
uma do tipo Connection do Oracle .- (Opcional) Adicione um comentário.
- Clique Avançar.
- Na página de Autenticação, insira o seguinte para a instância Oracle:
-
Host: Por exemplo,
oracle-demo.123456.rds.amazonaws.com
-
Port: Por exemplo,
1521
-
User: Por exemplo,
oracle_user
-
Palavra-passe: Por exemplo,
password123
-
Host: Por exemplo,
- Clique em Criar conexão.
- Na página de noções básicas Catalog, insira um nome para o catalog. Um catalog 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 que 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 selectfazer com que todos os espaços de trabalho tenham acesso, ou clicar em Atribuir a espaços de trabalho, select selecionar 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 uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
-
Grant
Privilégios no catalog. Clique Grant:
- Especifique os Entidades que terão acesso aos objetos no catalog. Comece a digitar uma entidade de segurança na caixa de texto e clique na entidade de segurança nos resultados retornados.
-
Select os predefinições de Privilégio para grant a cada principal. Todos os usuários da conta recebem
BROWSE
por padrão.-
Select
Leitor de Dados no menu suspenso para grant
read
privilégios em objetos no catalog. - Selecione SelectEditor de Dados no menu suspenso, para atribuir grant
read
emodify
privilégios em objetos no catalog. - Atribua manualmente select os privilégios para grant.
-
Select
Leitor de Dados no menu suspenso para grant
- Clique em Grant.
- Clique Avançar.
- Na página Metadados , especifique os pares chave-valor de etiquetas. Para obter mais informações, consulte Aplicar tags nos objetos protegíveis do Unity Catalog.
- (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 oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
O Databricks recomenda 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 oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Se tiver de usar cadeias de texto simples em comandos SQL do caderno, evite truncar a cadeia de caracteres escapando de caracteres especiais, como $
com \
. Por exemplo: \$
.
Para obter informações sobre como configurar segredos, consulte Gestão de segredos.
Criar uma catalog estrangeira
Observação
Se utilizar a Interface de Utilizador para criar uma ligação à fonte de dados, a criação de catalog externa será incluída e poderá ignorar este passo.
Um catalog 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 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 comandos /api/2.1/unity-catalog/catalogs e Unity Catalog.
Permissões necessárias:CREATE CATALOG
permissão no metastore e a propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG
na conexão.
Catalog Explorer
No 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 em 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 espaço reservado 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 o credentialsde acesso. -
<service-name>
: Nome do serviço que você deseja espelhar como um catalog no Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Pushdowns suportados
As seguintes flexões são suportadas:
- Filtros
- Projeções
- Limit
- Agregados
- Offset
- Elenco
- Contém, Começa com, Termina com
Mapeamentos de tipo de dados
Quando você lê do Oracle para o Spark, os tipos de dados são mapeados da seguinte maneira:
Tipo Oracle | Tipo de faísca |
---|---|
CARIMBO DE DATA/HORA COM TIMEZONE, CARIMBO DE DATA/HORA LOCAL COM TIMEZONE | Tipo de Timestamp |
DATA, CARIMBO DE DATA/HORA | TimestampType/TimestampNTZType* |
NÚMERO, FLOAT | Tipo decimal |
FLUTUADOR BINÁRIO | Tipo de flutuação |
DUPLO BINÁRIO | Tipo Duplo |
CHAR, NCHAR, VARCHAR2, NVARCHAR2 | StringType |
- DATE e TIMESTAMP são mapeados para Spark TimestampType se
spark.sql.timestampType = TIMESTAMP_LTZ
(padrão). Eles são mapeados para TimestampNTZType sespark.sql.timestampType = TIMESTAMP_NTZ
.