Dela via


Federerade frågor (Lakehouse Federation)

Gäller endast för: markerad ja Databricks SQL markerad ja Databricks Runtime 13.3 LTS och senare markerad ja i Unity Catalog

Med frågefederation kan Azure Databricks köra frågor mot data som hanteras av andra Azure Databricks-metaarkiv samt många databashanteringssystem från tredje part (DBMS) som PostgreSQL, mySQL och Snowflake.

Om du vill köra frågor mot data från ett annat system måste du:

  1. Skapa en extern anslutning. Detta registrerar den specifika federerade servern med Unity Catalog och etablerar metoder för att kommunicera med den, till exempel den URL, port och de autentiseringsuppgifter som används.
  2. Registrera externa kataloger från den federerade servern med Unity Catalog
  3. Ge användare åtkomst till de externa katalogerna. Detta kan göras på katalog-, schema- eller tabellnivå som du skulle göra med vanliga skyddsbara objekt.

Du kan nu skicka frågor till de olika lokala och utländska relationerna.

Extern anslutning

En extern anslutning är ett skyddsbart Unity Catalog-objekt som identifierar en sekundär server. Som en del av SKAPA ANSLUTNING anger du den URL där servern kan nås.

Du måste också ange alternativ som användarnamn och lösenord eller annan godkänd autentisering, som Azure Databricks använder för att kommunicera.

Utländsk katalog

Med en extern anslutning som stöder namnområden på tre nivåer (catalog/database.schema.table) kan du registrera hela kataloger med Unity Catalog med kommandot CREATE FOREIGN CATALOG . Azure Databricks håller definitionen av katalogens scheman och deras relationer synkroniserade med den externa källan.

Exempel

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