Delen via


Federatieve query's (Lakehouse Federation)

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

  1. 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.
  2. Refererende catalogi registreren bij de federatieve server met Unity Catalog
  3. 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;
  ...