メインコンテンツまでスキップ

Databricks Unity Catalogとの統合

企業がLakehouseアーキテクチャの下で増大するデータ資産を管理するにつれ、クロスプラットフォームで高性能、かつガバナンスされたデータアクセス機能への需要がより急務となっています。次世代リアルタイム分析データベースであるApache Dorisは、Databricks Unity Catalogとの深い統合を実現し、企業が統一されたガバナンスフレームワークの下でDatabricksによって管理されるデータレイクに直接アクセスし、効率的にクエリできるようにし、シームレスなデータ接続を実現しています。

この文書を通じて、以下について深く理解できます:

  • Databricks環境セットアップ: DatabricksでのExternal Locations、Catalogs、およびIcebergテーブルの作成方法と関連する権限設定

  • 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機能を通じて外部システムに短期間の認証情報を発行し、外部システムがこれらのパスにアクセスできるようにします。

unity1

この文書では、AWS Quickstartを使用してAWS S3にExternal Locationを作成します。

unity2

作成後、External Catalogとその対応するCredentialを確認できます:

unity3

Catalogの作成

インターフェースでCreate Catalogオプションをクリックします。

unity4

Catalog名を入力します。Use default storageのチェックを外し、先ほど作成したExternal Locationを選択します。

unity5

External Use Schema権限の有効化

新しく作成したCatalogPermissionsGrantをクリックします:

unity6

All account usersを選択し、EXTERNAL USE SCHEMAオプションにチェックを入れます。

unity7

Icebergテーブルの作成とデータ挿入

Databricks SQL EditorでIcebergテーブルを作成し、データを挿入するために以下のSQLを実行します:

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ページに移動して、UserDeveloperの下のAccess tokensを選択します。DorisをUnity Catalogに接続する際に使用するための新しいTokenを作成してください。Tokenはdapi4f...の形式の文字列です。

DorisのUnity 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 へのアクセス

作成後、Unity Catalog に保存された Iceberg テーブルにアクセスを開始できます:

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 テーブルの管理

Unity Catalog 内の Iceberg テーブルを Doris を通じて直接作成、管理、書き込みすることもできます:

-- 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を活用してより機敏でインテリジェントなデータアプリケーションを構築できます。