Delen via


Federatieve query's (Lakehouse Federation)

Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 13.3 LTS en hoger aangevinkt als ja en alleen 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:

  1. Maak een buitenlandse verbinding. Hiermee wordt de specifieke federatieve server geregistreerd bij Unity Catalog en worden middelen om ermee te communiceren tot stand gebracht, zoals de URL, poort en inloggegevens die worden gebruikt.
  2. Buitenlandse catalogi registreren van de gefedereerde server met Unity Catalog
  3. Verleen gebruikers toegang tot de buitenlandse 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.

Buitenlandse verbinding

Een externe verbinding is een beschermbaar object binnen Unity Catalog dat een externe server identificeert. Als onderdeel van CREATE CONNECTIONgeeft 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.

Buitenlandse catalogus

Aangezien er een buitenlandse verbinding is die ondersteuning biedt aan naamruimten op drie niveaus (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 externe 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;
  ...