Consultas federadas (Lakehouse Federation)
Aplica-se a: Databricks SQL Databricks Runtime 13.3 LTS e superior Unity Catalog apenas
A federação de consultas permite que o Azure Databricks execute consultas em dados servidos por outros metastores do Azure Databricks, bem como por muitos sistemas de gerenciamento de banco de dados (DBMS) de terceiros, como PostgreSQL, mySQLe Snowflake.
Para consultar dados de outro sistema, você deve:
- Crie uma conexão externa. Isso registra o servidor federado específico com o Unity Catalog e estabelece meios para se comunicar com ele, como URL, porta e credentials usados.
- Registar catalogs estrangeiro no servidor federado com o Unity Catalog
- Grant utilizadores têm acesso ao catalogsestrangeiro. Isso pode ser feito no nível catalog, schemaou table, como você faria com os valores mobiliários regulares.
Agora você pode emitir consultas nas várias relações locais e estrangeiras.
Ligação ao estrangeiro
Uma conexão estrangeira é um objeto protegível do Unity Catalog que identifica um servidor estrangeiro. Como parte do CREATE CONNECTION, você especifica a URL where pela qual o servidor pode ser acessado.
Você também deve fornecer opções como o nome de usuário e senha ou outra autenticação aceita, que o Azure Databricks usará para se comunicar.
Estrangeiros catalog
Dada uma conexão estrangeira que suporta namespaces de três níveis (catalog/database.schema.table
), você pode registrar catalogs inteiros com o Unity Catalog usando o comando CREATE FOREIGN CATALOG.
O Azure Databricks mantém a definição dos esquemas do cataloge as suas relações em sync 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;
...