Sdílet prostřednictvím


Federované dotazy (Lakehouse Federation)

platí pro:zaškrtněte políčko Ano Databricks SQL zaškrtněte políčko Ano Databricks Runtime 13.3 LTS a vyšší, zaškrtněte políčko Ano pouze katalogu Unity.

Federace dotazů umožňuje službě Azure Databricks spouštět dotazy na data obsluhovaná jinými metastory Azure Databricks a také mnoho systémů pro správu databází třetích stran, jako je PostgreSQL, mySQLa Snowflake.

Pokud chcete dotazovat data z jiného systému, musíte:

  1. Vytvořte cizí připojení. Tím se konkrétní federovaný server zaregistruje do katalogu Unity a vytvoří se způsob komunikace s ním, jako je adresa URL, port a použité přihlašovací údaje.
  2. Registrace cizích katalogů z federovaného serveru pomocí katalogu Unity
  3. udělte uživatelům přístup k cizím katalogům. To lze provést na úrovni katalogu, schématu nebo tabulky, podobně jako u běžných zabezpečovaných objektů.

Nyní můžete vydávat dotazy napříč různými místními a zahraničními vztahy.

Cizí připojení

Cizí připojení je zabezpečitelný objekt katalogu Unity, který identifikuje cizí server. V rámci CREATE CONNECTIONzadáte adresu URL, ke které má server přístup.

Musíte také zadat možnosti, jako je uživatelské jméno a heslo nebo jiné akceptované ověřování, které bude Azure Databricks používat ke komunikaci.

Cizí katalog

Vzhledem k cizímu připojení, které podporuje tříúrovňové obory názvů (catalog/database.schema.table), můžete pomocí příkazu CREATE FOREIGN CATALOG zaregistrovat celé katalogy v Katalogu Unity. Azure Databricks uchovává definici schémat katalogu a jejich vztahy synchronizované se zahraničním zdrojem.

Příklady

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