Federerade frågor (Lakehouse Federation)
Gäller endast för: Databricks SQL Databricks Runtime 13.3 LTS och senare 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:
- 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.
- Registrera externa kataloger från den federerade servern med Unity Catalog
- 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;
...