Partilhar via


Consultas federadas (Lakehouse Federation)

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 13.3 LTS e superior Marque Sim somente Unity Catalog

A federação de consultas permite que o Azure Databricks execute consultas em dados servidos por outros metastores do Azure Databricks, bem como muitos sistemas de gerenciamento de banco de dados (DBMS) de terceiros, como PostgreSQL, mySQL e Snowflake.

Para consultar dados de outro sistema, você deve:

  1. 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 a URL, a porta e as credenciais usadas.
  2. Registrar catálogos estrangeiros do servidor federado com o Unity Catalog
  3. Conceda aos usuários acesso aos catálogos estrangeiros. Isso pode ser feito no nível de catálogo, esquema ou tabela, como você faria com protegíveis 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 de CREATE CONNECTION, você especifica a URL onde 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.

Catálogo estrangeiro

Dada uma conexão estrangeira que suporta namespaces de três níveis (catalog/database.schema.table), você pode registrar catálogos inteiros com o 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 estrangeira.

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;
  ...