Интеграция с Databricks Unity Catalog
По мере того как предприятия всё активнее управляют растущими массивами данных в рамках архитектуры Lakehouse, всё острее становится потребность в межплатформенном, высокопроизводительном и контролируемом доступе к данным. Apache Doris, база данных нового поколения для аналитики в реальном времени, теперь тесно интегрирована с Databricks Unity Catalog. Благодаря этому предприятия могут напрямую обращаться к озёрам данных под управлением Databricks и эффективно выполнять запросы к ним в рамках единой системы управления данными, обеспечивая беспрепятственное взаимодействие платформ.
В этой документации подробно рассматриваются:
-
Настройка среды Databricks: создание External Locations, объектов Catalog и таблиц Iceberg в Databricks, а также настройка соответствующих разрешений
-
Подключение Doris к Unity Catalog: подключение Doris к Databricks Unity Catalog и доступ к таблицам Iceberg
Примечание: для использования этой функции требуется Doris версии 3.1.3 или выше.
Настройка среды Databricks
Создание External Location
В Unity Catalog External Location представляет собой защищённый объект, который связывает пути в облачном объектном хранилище с учётными данными Storage Credentials. External Locations поддерживают внешний доступ, а Unity Catalog может выдавать внешним системам краткосрочные учётные данные с помощью функции Credential Vending, предоставляя им доступ к этим путям.

В этом документе для создания External Location в AWS S3 используется AWS Quickstart.

После создания вы увидите внешний Catalog и соответствующие учётные данные:

Создание Catalog
Выберите в интерфейсе пункт создания Catalog.

Введите имя Catalog. Снимите флажок Use default storage и выберите созданный ранее External Location.

Предоставление разрешения на внешнее использование схемы
Откройте только что созданный Catalog → Permissions → Grant:

Выберите All account users и установите флажок EXTERNAL USE SCHEMA.

Создание таблиц Iceberg и вставка данных
Выполните следующий SQL в Databricks SQL Editor, чтобы создать таблицу Iceberg и вставить данные:
CREATE TABLE `my-unity-catalog`.default.iceberg_table (
id int,
name string
) USING iceberg;
INSERT INTO `my-unity-catalog`.default.iceberg_table VALUES(1, "jack");
Получение токена доступа
Нажмите на аватар пользователя в правом верхнем углу, перейдите на страницу Settings и выберите Access tokens в разделе User → Developer. Создайте новый токен для последующего подключения Doris к Unity Catalog. Токен представляет собой строку в формате: dapi4f...
Подключение Doris к Unity Catalog
Создание Catalog
-- Use oauth2 credential and vended credentials
CREATE CATALOG dbx_unity_catalog PROPERTIES (
"uri" = "https://dbc-xx.cloud.databricks.com:443/api/2.1/unity-catalog/iceberg-rest/",
"type" = "iceberg",
"warehouse" = "my-unity-catalog",
"iceberg.catalog.type" = "rest",
"iceberg.rest.security.type" = "oauth2",
"iceberg.rest.oauth2.credential" = "clientid:clientsecret",
"iceberg.rest.oauth2.server-uri" = "https://dbc-xx.cloud.databricks.com:443/oidc/v1/token",
"iceberg.rest.oauth2.scope" = "all-apis",
"iceberg.rest.vended-credentials-enabled" = "true"
);
-- Use PAT and vended credentials
CREATE CATALOG dbx_unity_catalog PROPERTIES (
"uri" = "https://<dbc-account>.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest/",
"type" = "iceberg",
"warehouse" = "my-unity-catalog",
"iceberg.catalog.type" = "rest",
"iceberg.rest.security.type" = "oauth2",
"iceberg.rest.oauth2.token" = "<token>",
"iceberg.rest.vended-credentials-enabled" = "true"
);
-- Use oauth2 credential and static ak/sk for accessing aws s3
CREATE CATALOG dbx_unity_catalog PROPERTIES (
"uri" = "https://dbc-xx.cloud.databricks.com:443/api/2.1/unity-catalog/iceberg-rest/",
"type" = "iceberg",
"warehouse" = "my-unity-catalog",
"iceberg.catalog.type" = "rest",
"iceberg.rest.security.type" = "oauth2",
"iceberg.rest.oauth2.credential" = "clientid:clientsecret",
"iceberg.rest.oauth2.server-uri" = "https://dbc-xx.cloud.databricks.com:443/oidc/v1/token",
"iceberg.rest.oauth2.scope" = "all-apis",
"s3.endpoint" = "https://s3.<region>.amazonaws.com",
"s3.access_key" = "<ak>",
"s3.secret_key" = "<sk>",
"s3.region" = "<region>"
);
Доступ к Catalog
После создания можно начать работу с таблицами Iceberg, хранящимися в Unity Catalog:
mysql> USE dbx_unity_catalog.`default`;
Database changed
mysql> SELECT * FROM iceberg_table;
+------+------+
| id | name |
+------+------+
| 1 | jack |
+------+------+
1 row in set (3.32 sec)
Управление таблицами Iceberg
Через Doris также можно напрямую создавать таблицы Iceberg в Unity Catalog, управлять ими и записывать в них данные:
-- Write to existing table in Unity Catalog
INSERT INTO iceberg_table VALUES(2, "mary");
-- Create a partitioned table
CREATE TABLE partition_table (
`ts` DATETIME COMMENT 'ts',
`col1` BOOLEAN COMMENT 'col1',
`pt1` STRING COMMENT 'pt1',
`pt2` STRING COMMENT 'pt2'
)
PARTITION BY LIST (day(ts), pt1, pt2) ();
-- Insert data
INSERT INTO partition_table VALUES("2025-11-12", true, "foo", "bar");
-- View table partition information
SELECT * FROM partition_table$partitions\G
*************************** 1. row ***************************
partition: {"ts_day":"2025-11-12", "pt1":"foo", "pt2":"bar"}
spec_id: 0
record_count: 1
file_count: 1
total_data_file_size_in_bytes: 2552
position_delete_record_count: 0
position_delete_file_count: 0
equality_delete_record_count: 0
equality_delete_file_count: 0
last_updated_at: 2025-11-18 15:20:45.964000
last_updated_snapshot_id: 9024874735105617773
Итоги
Благодаря тесной интеграции с Databricks Unity Catalog Apache Doris позволяет предприятиям получать доступ к ключевым информационным активам в озёрах данных и анализировать их с более высокой производительностью и меньшими затратами в рамках единой системы управления данными. Эта возможность повышает согласованность архитектуры Lakehouse в целом и открывает новые возможности для аналитики в реальном времени, интерактивных запросов и сценариев применения AI. Команды по работе с данными, инженеры-аналитики и архитекторы платформ могут использовать Doris для создания более гибких и интеллектуальных приложений на основе существующих озёр данных.