Consultas federadas (Federação de Lakehouse)
Aplica-se a: SQL do Databricks Databricks Runtime 13.3 LTS e superior somente para o Catálogo do Unity
A federação de consulta permite que o Azure Databricks execute consultas em relação aos dados atendidos por outros metastores do Azure Databricks, bem como muitos DBMS (sistemas de gerenciamento de banco de dados de terceiros), como PostgreSQL, mySQL e Snowflake.
Para consultar dados de outro sistema, você deve:
- Criar uma conexão externa. Isso registra o servidor federado específico com o Catálogo do Unity e estabelece meios para se comunicar com ele, como a URL, a porta e as credenciais usadas.
- Registrar catálogos externos do servidor federado com o Catálogo do Unity
- Conceda acesso aos catálogos estrangeiros para os usuários. Isso pode ser feito no nível do catálogo, esquema ou tabela, como você faria com protegíveis regulares.
Agora você pode emitir consultas nas várias relações locais e externas.
Conexão externa
Uma conexão externa é um objeto protegível do Catálogo do Unity que identifica um servidor externo. Como parte de CREATE CONNECTION, você especifica a URL em que o servidor pode ser acessado.
Você também deve fornecer opções como o nome de usuário e a senha ou outra autenticação aceita, que o Azure Databricks usará para se comunicar.
Catálogo externo
Com uma conexão externa que suporta namespaces de três níveis (catalog/database.schema.table
), é possível registrar catálogos inteiros no Unity Catalog usando o comando CREATE FOREIGN CATALOG.
O Azure Databricks mantém a definição dos esquemas do catálogo e suas relações em sincronia com a fonte externa.
Exemplos
-- Create a postgresql connection
> CREATE CONNECTION postgresql_connection
TYPE POSTGRESQL
OPTIONS (
host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
port '5432',
user 'postgresql_user',
password 'password123');
-- Alternatively create a postgresql connection with secret scope
> CREATE CONNECTION postgresql_connection
TYPE POSTGRESQL
OPTIONS (
host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
port '5432',
user secret('secrets.r.us', 'postgresUser'),
password secret('secrets.r.us', 'postgresPassword'));
-- Expose the "postgresdb" database with schemas and tables postgresql_user can access.
> CREATE FOREIGN CATALOG postgresql_catalog
USING CONNECTION postgresql_connection
OPTIONS (database 'postgresdb');
-- Execute a query across tables in the above catalog, schema, and table.
> SELECT * FROM postgresql_catalog.a_schema.table1
UNION ALL
SELECT * FROM default.postgresql_schema.table2
UNION ALL
SELECT * FROM default.postgresql.mytable
UNION ALL
SELECT local_table;
...