Compartilhar via


Consultas federadas (Federação de Lakehouse)

Aplica-se a:verificação marcada como sim SQL do Databricks verificação marcada como sim Databricks Runtime 13.3 LTS e superior verificação marcada como sim 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:

  1. 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.
  2. Registrar catálogos externos do servidor federado com o Catálogo do Unity
  3. 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;
  ...