LoginSignup
4
1

More than 1 year has passed since last update.

Unity Catalog のカタログIsolation機能を試す

Last updated at Posted at 2022-12-04

はじめに

Unity Catalogでカタログまたはスキーマレベルで保存するストレージ領域を選択できるカタログIsolation機能がリリースされました。どんな機能でどのように設定するのか見てみたいと思います。

何がうれしいのか?

従来はUnity CatalogのManaged Tableとして利用する場合、DeltaLakeの保存先はUnity Catalogセットアップ時に作成するメタストアのストレージのみでした。そのため複数のワークスペースでUnity Catalogを共有してもストレージは同じになってしまうため、管理や課金を分割出来ないという問題がありました。(従来は外部テーブルしか利用できなかった)

今回の機能によって、カタログやスキーマ単位でストレージロケーションを分けられるため上記のような問題が解消されます。これは管理者からするとかなり嬉しい機能なのです。

設定方法

マニュアルはこちら(AWS, Azureで利用可能です)

1. ストレージロケーションの作成

まずは保存先となるストレージを作成し、外部ロケーションとしてUnity Catalogに登録する必要があります。外部ロケーションの作成&登録方法はこちらをご覧ください。

今回AWS上で作成したもの
・ S3 bucket : db-managed-bucket2
・ IAM Role: uc-managed-catalog2

Databricks上で設定したもの
・ ストレージ資格:  

・ 外部ロケーション

2. カタログ作成

「データエクスプローラー」画面に移動し、右上の「カタログを作成」ボタンをクリックし、新規にカタログを作成します。その際に、Managed locationというオプション欄に先ほど作成したS3Bucketのパスを登録します。
image.png

スキーマ作成時も同様の方法でストレージを選択できます。

確認

まずは詳細タブでカタログ情報を確認してみます。ご覧のとおりストレージロケーションが指定したバケットへのパスになっております。

image.png

次にスキーマやテーブルを作成してみます。

image.png

テーブル詳細をチェックしてみると、Managed Tableとして別のS3バケット上に保存されておりました。
image.png

AWSコンソールからS3バケットをチェックしてみるとちゃんとDeltaLakeができておりました。
image.png

コードベースでロケーションするには?

マニュアルにはUIベースでの指定方法のみ記載がありましたが、SQLコマンドでCatalogやスキーマ作成時に、外部ストレージを指定出来るか確認してみました。

今回は、db_catalog というカタログをmetastore上に作成し、新規スキーマを別S3バケット上に指定して作成してみます。

create schema if not exists db_catalog.isolation_test location 's3://db-managed-bucket2'

テーブルも以下のように作成します。

create table if not exists db_catalog.isolation_test.test1 AS
select
  *
from
  samples.nyctaxi.trips
LIMIT
  1000

テーブル詳細を確認してみます。
image.png

コードベースでもロケーション指定することが出来ました。

その他

UnityCatalogのセットアップや機能についてはこちらをご覧ください。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1