Zapytania federacyjne (Federacja Lakehouse)

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowszy zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

Federacja zapytań umożliwia usłudze Azure Databricks wykonywanie zapytań względem danych obsługiwanych przez inne magazyny metadanych usługi Azure Databricks, a także wiele systemów zarządzania bazami danych innych firm, takich jak PostgreSQL, mySQL i Snowflake.

Aby wykonać zapytanie o dane z innego systemu, musisz:

  1. Utwórz połączenie obce. Spowoduje to zarejestrowanie określonego serwera federacyjnego z wykazem aparatu Unity i ustanawia środki komunikacji z nim, takie jak adres URL, port i używane poświadczenia.
  2. Rejestrowanie katalogów obcych z serwera federacyjnego za pomocą wykazu aparatu Unity
  3. Udziel użytkownikom dostępu do katalogów zagranicznych. Można to zrobić na poziomie wykazu, schematu lub tabeli, tak jak w przypadku zwykłych zabezpieczania.

Teraz można wysyłać zapytania w różnych stosunkach lokalnych i zagranicznych.

Połączenie obce

Połączenie obce to zabezpieczany obiekt wykazu aparatu Unity, który identyfikuje obcy serwer. W ramach tworzenia połączenia należy określić adres URL, pod którym można uzyskać dostęp do serwera.

Należy również podać opcje, takie jak nazwa użytkownika i hasło lub inne zaakceptowane uwierzytelnianie, którego usługa Azure Databricks będzie używać do komunikowania się.

Wykaz obcy

Biorąc pod uwagę połączenie obce, które obsługuje trzy-poziomowe przestrzenie nazw (catalog/database.schema.table), można zarejestrować całe wykazy w wykazie aparatu Unity przy użyciu polecenia CREATE FOREIGN CATALOG . Usługa Azure Databricks przechowuje definicję schematów katalogu i ich relacji zsynchronizowanych ze źródłem obcym.

Przykłady

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