Consultas federadas (Federación de Lakehouse)

se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 13.3 LTS y versiones posteriores solo casilla marcada como Sí Unity Catalog

La federación de consultas permite a Azure Databricks ejecutar consultas en los datos servidos por otros metastores de Azure Databricks, así como muchos sistemas de administración de bases de datos de terceros (DBMS), como PostgreSQL, mySQL y Snowflake.

Para consultar datos de otro sistema, debe:

  1. Creación de una conexión externa. Esto registra el servidor federado específico con el catálogo de Unity y establece medios para comunicarse con él, como la dirección URL, el puerto y las credenciales usadas.
  2. Registro de catálogos externos desde el servidor federado con el catálogo de Unity
  3. Conceda a los usuarios acceso a los catálogos externos. Esto se puede hacer en el nivel de catálogo, esquema o tabla, como haría con elementos protegibles normales.

Ahora puede emitir consultas a través de las distintas relaciones locales y externas

Conexión externa

Una conexión externa es un objeto protegible del catálogo de Unity que identifica un servidor externo. Como parte de CREATE CONNECTION, especifique la dirección URL a la que se puede acceder al servidor.

También debe proporcionar opciones como el nombre de usuario y la contraseña u otra autenticación aceptada, que Azure Databricks usará para comunicarse.

Catálogo externo

Dada una conexión externa que admite espacios de nombres de tres niveles (catalog/database.schema.table), puede registrar catálogos completos con el catálogo de Unity mediante el comando CREATE FOREIGN CATALOG. Azure Databricks mantiene la definición de los esquemas del catálogo y sus relaciones sincronizadas con el origen externo.

Ejemplos

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