Federatieve query's (Lakehouse Federation)
Van toepassing op: Alleen Databricks SQL Databricks Runtime 13.3 LTS en hoger dan Unity Catalog
Met queryfederatie kan Azure Databricks query's uitvoeren op gegevens die worden geleverd door andere Azure Databricks-metastores, evenals veel databasebeheersystemen van derden (DBMS), zoals PostgreSQL, mySQL en Snowflake.
Als u gegevens uit een ander systeem wilt opvragen, moet u het volgende doen:
- Maak een refererende verbinding. Hiermee wordt de specifieke federatieve server geregistreerd bij Unity Catalog en wordt er een communicatiemiddel mee tot stand brengen, zoals de URL, poort en referenties die worden gebruikt.
- Refererende catalogi registreren bij de federatieve server met Unity Catalog
- Gebruikers toegang verlenen tot de refererende catalogi. Dit kan worden gedaan op het niveau van de catalogus, het schema of de tabel, net zoals u dat zou doen met normale beveiligbare items.
U kunt nu query's uitvoeren voor de verschillende lokale en buitenlandse relaties.
Refererende verbinding
Een refererende verbinding is een beveiligbaar object voor Unity Catalog dat een refererende server identificeert. Als onderdeel van CREATE CONNECTION geeft u de URL op waar de server kan worden geopend.
U moet ook opties opgeven, zoals de gebruikersnaam en het wachtwoord of andere geaccepteerde verificatie, die Door Azure Databricks worden gebruikt om te communiceren.
Refererende catalogus
Gezien een refererende verbinding die naamruimten van drie niveaus ondersteunt (catalog/database.schema.table
) kunt u volledige catalogi registreren bij Unity Catalog met behulp van de opdracht CREATE FOREIGN CATALOG .
Azure Databricks houdt de definitie van de schema's van de catalogus en hun relaties gesynchroniseerd met de refererende bron.
Voorbeelden
-- 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;
...