Consultas federadas (Federación de Lakehouse)
Se aplica a: Databricks SQL Databricks Runtime 13.3 LTS y versiones posteriores solo a 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:
- 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.
- Registro de catálogos externos desde el servidor federado con el catálogo de Unity
- 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;
...