Федеративные запросы (Федерация Lakehouse)
применимо: Databricks SQL Databricks Runtime 13.3 LTS и более поздние версии Unity Catalog
Федерация запросов позволяет Azure Databricks выполнять запросы к данным, обслуживаемыми другими metastores Azure Databricks, а также многими сторонними системами управления базами данных (СУБД), такими как PostgreSQL, mySQLи Snowflake.
Чтобы запросить данные из другой системы, необходимо:
- Создайте внешнее подключение. Это регистрирует конкретный федеративный сервер в Unity Catalog и определяет средства взаимодействия с ним, такие как используемые URL-адрес, порт и credentials.
- Регистрация внешних catalogs с федеративного сервера с помощью Unity Catalog
- Grant доступ пользователей к иностранным catalogs. Это можно сделать на уровне catalog, schemaили table, как и с обычными защищаемыми объектами.
Теперь вы можете выдавать запросы между различными местными и внешними отношениями.
Внешнее подключение
Внешнее подключение — это защищаемый объект Unity Catalog, который идентифицирует внешний сервер. В рамках CREATE CONNECTIONукажите URL-адрес where доступ к серверу.
Кроме того, необходимо указать такие параметры, как имя пользователя и пароль или другая принятая проверка подлинности, которую Azure Databricks будет использовать для обмена данными.
Внешние catalog
Имея внешнее подключение, которое поддерживает три уровня пространств имен (
Примеры
-- 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;
...