Unity Catalog の設定と管理

この記事では、Unity Catalog を構成して使用し、Databricks ワークスペース内のデータを管理する方法について説明します。 これは主に、Unity Catalog を初めて使用するワークスペース管理者を対象としています。 Databricks Terraform プロバイダーを使用して Unity Catalog を設定するには、「 Terraform を使用して Unity Catalog のセットアップを自動化する」を参照してください。

この記事を読み終えると、次のことができるようになります。

  • Unity Catalog に対して有効になっているワークスペース。

  • Unity Catalog にアクセスできるコンピュート。

  • Unity Catalog でオブジェクトにアクセスして作成するアクセス許可を持つユーザー。

また、他の入門記事もご覧ください。

Unity Catalog の有効化の概要

Unity Catalog を使用するには、Databricks ワークスペースを Unity Catalog に対して有効にする必要があります (つまり、ワークスペースが Unity Catalog メタデータの最上位コンテナーである Unity Catalog メタストアにアタッチされていることを意味します)。

管理者が Unity Catalog を設定する方法は、ワークスペースが Unity Catalog に対して自動的に有効になったか、手動で有効にする必要があるかによって異なります。

Unity Catalog の自動有効化

Databricks は、2024 年 3 月 6 日に Unity Catalog の新しいワークスペースを自動的に有効にし始め、ロールアウトはアカウント全体で段階的に進められました。 自動的に有効になったワークスペースには、次のプロパティがあります。

  • 自動的にプロビジョニングされた Unity Catalog メタストア (ワークスペース リージョンに Unity Catalog メタストアが既に存在し、メタストアで ワークスペースの自動割り当てが有効になっている場合を除く)。

  • ワークスペース管理者のデフォルト権限(カタログや外部データベース接続を作成する機能など)。

  • メタストア管理者がいない (既存の Unity Catalog メタストアが使用され、メタストア管理者が既に割り当てられている場合を除く)。

  • マネージド テーブルとマネージド ボリュームのメタストア レベルのストレージはありません (メタストア レベルのストレージを持つ既存の Unity Catalog メタストアが使用されていない場合)。

  • ワークスペース カタログは、最初にプロビジョニングされたときに、ワークスペースにちなんだ名前が付けられます。

    ワークスペース内のすべてのユーザーは、このカタログの default スキーマに資産を作成できます。 既定では、このカタログはワークスペースに バインド されているため、ワークスペースからのみアクセスできます。 ワークスペース作成時のワークスペース カタログの自動プロビジョニングは、アカウント間で段階的にロールアウトされています。

これらのデフォルト構成は、ほとんどのワークスペースで適切に機能しますが、ワークスペース管理者またはアカウント管理者がすべて変更できます。 たとえば、アカウント管理者はメタストア管理者を割り当ててメタストア レベルのストレージを作成でき、ワークスペース管理者はワークスペース カタログの名前とアクセス権を変更できます。

ワークスペースで Unity Catalog が自動的に有効になっていない場合はどうなりますか?

ワークスペースで Unity Catalog が自動的に有効になっていない場合、アカウント管理者またはメタストア管理者は、同じリージョン内の Unity Catalog メタストアにワークスペースを手動でアタッチする必要があります。 リージョンに Unity Catalog メタストアが存在しない場合は、アカウント管理者が作成する必要があります。 手順については、「 Unity Catalog メタストアを作成する」を参照してください。

ワークスペースで Unity Catalog が有効になっているかどうかは、どうすればわかりますか?

ワークスペースで Unity Catalog が有効になっているかどうかを確認するには、Databricks ワークスペース管理者またはアカウント管理者に確認を依頼してください。 「 ステップ 1: ワークスペースで Unity Catalog が有効になっていることを確認する」も参照してください。

ワークスペースに ワークスペースカタログが含まれているかどうかは、どうすればわかりますか?

一部の新しいワークスペースにはワークスペース カタログがあり、最初にプロビジョニングされたときに、 ワークスペースにちなんだ名前が付けられます。 ワークスペースにカタログがあるかどうかを確認するには、サイドバーのカタログ アイコン 「カタログ」(Catalog ) をクリックして カタログエクスプローラーを開き、ワークスペース名をカタログ名として使用するカタログを検索します。

ワークスペース カタログは、Unity Catalog の他のカタログと同様に、ワークスペース管理者は名前の変更、所有権の変更、削除を行うことができます。 ただし、ワークスペースが作成された直後には、ワークスペース名が付けられます

始める前に

この記事で説明するタスクを開始する前に、メタストア、管理者ロール、マネージド ストレージなど、Unity Catalog の基本的な概念を理解しておく必要があります。 「 Unity Catalog とは」を参照してください。

また、次の要件を満たしていることも確認する必要があります。

  • Premium プランの Databricks ワークスペース。

  • 次の役割と権限は、ワークスペースのステータスによって異なります。

    • ワークスペース管理者: ワークスペースの作成時に Unity Catalog に対して自動的に有効になっていた場合、必要なタスクを完了するには、ワークスペース管理者である必要があります。

    • アカウント管理者: ワークスペースで Unity Catalog がまだ有効になっていない場合は、アカウント管理者がワークスペースをメタストアにアタッチする必要があります。

      ワークスペースと同じリージョンに Unity Catalog メタストアがない場合は、アカウント管理者も Unity Catalog メタストアを作成する必要があります。

      ワークスペース リージョンにメタストアが存在するかどうかを判断する手順と、メタストアを作成する手順については、この記事を参照してください。

    Unity Catalog の管理者権限」および「 Unity Catalog の自動有効化 」を参照してください。

ステップ 1: ワークスペースで Unity Catalog が有効になっていることを確認する

この手順では、ワークスペースが Unity Catalog に対して既に有効になっているかどうかを判断します (有効化は、ワークスペースに Unity Catalog メタストアがアタッチされていることとして定義されます)。 ワークスペースで Unity Catalog が有効になっていない場合は、Unity Catalog のワークスペースを手動で有効にする必要があります。 ワークスペースで Unity Catalog が有効になっていない場合は、「次へ」を参照してください。

確認するには、次のいずれかの操作を行います。

アカウント コンソールを使用して Unity Catalog の有効化を確認する

  1. Databricks アカウント管理者として、アカウント コンソールにログインします。

  2. [ ワークスペース] をクリックします 。ワークスペースアイコン

  3. ワークスペースを見つけて、 [ メタストア ] 列を確認します。 メタストア名が存在する場合、ワークスペースは Unity Catalog メタストアにアタッチされているため、Unity Catalog に対して有効になっています。

SQL クエリを実行して Unity Catalog の有効化を確認する

次の SQL クエリを、SQL クエリエディタ、または 共有 アクセスモードまたは シングルユーザー アクセスモードを使用するクラスターにアタッチされているノートブックで実行します。 「アクセスモード」を参照してください。管理者ロールは必要ありません。

SELECT CURRENT_METASTORE();

クエリで次のようなメタストア ID が返された場合、ワークスペースは Unity Catalog メタストアにアタッチされているため、Unity Catalog に対して有効になっています。

現在のメタストア出力

ワークスペースで Unity Catalog が有効になっていない場合の次のステップ

ワークスペースで Unity Catalog が有効になっていない (メタストアにアタッチされている) 場合、次の手順は、ワークスペース リージョンに対して Unity Catalog メタストアが既に定義されているかどうかによって異なります。

  • アカウントにワークスペース リージョン用に定義された Unity Catalog メタストアが既にある場合は、ワークスペースを既存のメタストアにアタッチするだけで済みます。 「 Unity Catalog のワークスペースを有効にする」を参照してください。

  • ワークスペースのリージョンに Unity Catalog メタストアが定義されていない場合は、メタストアを作成してから、ワークスペースをアタッチする必要があります。 「Unity Catalog メタストアを作成する」を参照してください。

ワークスペースで Unity Catalog が有効になっている場合は、次の手順に進みます。

ステップ 2: ユーザーを追加し、ワークスペース管理者ロールを割り当てる

ワークスペースを作成したユーザーは、ワークスペース管理者ロールを持つワークスペース・ユーザー(つまり、 admins ワークスペース・ローカル・グループのユーザー)として自動的に追加されます。 ワークスペース管理者は、ワークスペースにユーザーを追加および招待したり、ワークスペース管理者ロールを他のユーザーに割り当てたり、サービスプリンシパルとグループを作成したりできます。

アカウント管理者は、ユーザー、サービスプリンシパル、グループをワークスペースに追加することもできます。 アカウント管理者とメタストア管理者のロールを付与できます。

詳しくは、 ユーザーの管理をご覧ください。

ステップ 3: ユーザーがクエリーの実行とオブジェクトの作成に使用できるクラスターまたは SQLウェアハウスを作成する

Unity Catalog ワークロードを実行するには、コンピュート リソースが特定のセキュリティ要件に準拠している必要があります。 準拠していないコンピュート リソースは、Unity Catalog 内のデータやその他のオブジェクトにアクセスできません。 SQLウェアハウスは常に Unity Catalog の要件に準拠していますが、一部のクラスター アクセス モードは準拠していません。 アクセス・モードを参照してください。

ワークスペース管理者は、コンピュートの作成を管理者に制限するか、ユーザーが独自の SQL ウェアハウスとクラスターを作成できるようにするかを選択できます。 また、強制する Unity Catalog 準拠の仕様を使用して、ユーザーが独自の クラスター を作成できるようにする クラスターポリシー を作成することもできます。 コンピュートの権限を確認し、コンピュート ポリシーを作成および管理します

ステップ 4: ユーザーに権限を付与する

オブジェクトを作成して Unity Catalog カタログとスキーマでアクセスするには、ユーザーにそのアクセス許可が必要です。 このセクションでは、デフォルトで一部のワークスペースに付与されるユーザー権限と管理者権限について説明し、追加の権限を付与する方法について説明します。

デフォルトのユーザー権限

一部のワークスペースには、起動時にデフォルトのユーザー(管理者以外)権限があります。

  • 自動的にプロビジョニングされたワークスペースカタログでワークスペースを起動した場合、すべてのワークスペースユーザーは、 ワークスペースカタログdefault スキーマにオブジェクトを作成できます。

    ワークスペースにワークスペース カタログがあるかどうかを確認する方法については、「 ワークスペースにワークスペース カタログが含まれているかどうかを確認する方法」を参照してください。

  • ワークスペースで Unity Catalog を手動で有効にした場合は、 main カタログが自動的にプロビジョニングされます。

    ワークスペース ユーザーには、main カタログに対するUSE CATALOG権限があり、カタログ内のオブジェクトを作成または選択する機能は付与されませんが、カタログ内の任意のオブジェクトを操作するための前提条件です。メタストアを作成したユーザーは、既定で main カタログを所有し、所有権を譲渡したり、他のユーザーにアクセス権を付与したりできます。

    メタストアの作成後にメタストア ストレージが追加された場合、 main カタログはプロビジョニングされません。

その他のワークスペースでは、デフォルトでカタログが作成されず、管理者以外のユーザー権限もデフォルトで有効になっていません。 ワークスペース管理者は、最初のカタログを作成し、そのカタログとその中のオブジェクトへのアクセス権をユーザーに付与する必要があります。 このセクションのステップを完了する前に、「 ステップ 5: 新しいカタログとスキーマを作成する 」に進んでください。

デフォルトの管理者権限

一部のワークスペースには、起動時にデフォルトのワークスペース管理者権限があります。

  • ワークスペースで Unity Catalog が自動的に有効になった場合:

    • ワークスペース管理者は、新しいカタログとオブジェクトを新しいカタログに作成し、それらへのアクセス権を付与できます。

    • デフォルトによるメタストア管理はありません。

    • ワークスペース管理者は、ワークスペース カタログ (存在する場合) を所有し、そのカタログとそのカタログ内のオブジェクトへのアクセス権を付与できます。

  • ワークスペースで Unity Catalog を手動で有効にした場合:

    • ワークスペース管理者には、既定の Unity Catalog による特別な特権はありません。

    • メタストア管理者は、存在し、任意の Unity Catalog オブジェクトを作成でき、任意の Unity Catalog オブジェクトの所有権を取得できる必要があります。

自動的に有効になる Unity Catalog ワークスペースでワークスペース管理者に付与される追加のオブジェクト特権の一覧については、「ワークスペースが Unity Catalog に対して自動的に有効になっている場合のワークスペース管理者特権」を参照してください。

権限の付与

前のセクションにリストされているオブジェクト以外のオブジェクトにアクセスするには、特権ユーザーがそのアクセス権を付与する必要があります。

たとえば、 my-catalogで新しいスキーマを作成する権限をグループに付与するために、カタログ所有者は SQL エディターまたはノートブックで次の操作を実行できます。

GRANT CREATE SCHEMA ON my-catalog TO `data-consumers`;

ワークスペースで Unity Catalog が自動的に有効になった場合、ワークスペース管理者はワークスペース カタログを所有し、新しいスキーマを作成する機能を付与できます。

GRANT CREATE SCHEMA ON <workspace-catalog> TO `data-consumers`;

カタログエクスプローラーを使用して権限を付与および取り消すこともできます。

重要

ワークスペースローカル users または admins グループに権限を付与することはできません。 グループに権限を付与するには、アカウントレベルのグループである必要があります。

Unity Catalog での特権の管理の詳細については、「 Unity Catalog での特権の管理」を参照してください。

ステップ 5: 新しいカタログとスキーマを作成する

Unity Catalog の使用を開始するには、少なくとも 1 つのカタログが定義されている必要があります。 カタログは、Unity Catalog におけるデータの分離と整理の主要な単位です。 すべてのスキーマとテーブルは、ボリューム、ビュー、およびモデルと同様にカタログに存在します。

一部のワークスペースには、自動的にプロビジョニングされたカタログがありません。 Unity Catalog を使用するには、ワークスペース管理者がそのようなワークスペースの最初のカタログを作成する必要があります。

他のワークスペースは、ユーザーがアクセスして開始できる事前にプロビジョニングされたカタログ (ワークスペースが Unity Catalog に対して有効になった方法に応じて、ワークスペース カタログまたは main カタログ) にアクセスできます。 Databricks にデータと AI 資産を追加すると、追加のカタログを作成して、データを論理的に管理しやすい方法でそれらの資産をグループ化できます。

カタログとスキーマを使用してデータと AI 資産を整理する最適な方法に関する推奨事項については、「 Unity Catalog のベスト プラクティス」を参照してください。

メタストア管理者、ワークスペース管理者 (自動有効化されたワークスペースのみ)、または CREATE CATALOG 権限を持つ他のユーザーは、メタストアに新しいカタログを作成できます。 その際、次のことを行う必要があります。

  1. 新しいカタログの管理 対象ストレージ を作成します。

    マネージド ストレージは、Google クラウド アカウント内のマネージド テーブルとマネージド ボリューム専用のストレージの場所です。 マネージド ストレージは、メタストア、カタログ、およびスキーマに割り当てることができます。 ユーザーがテーブルを作成すると、データは階層の最下位の格納場所に格納されます。 たとえば、メタストアとカタログには格納場所が定義されているが、スキーマには定義されていない場合、データはカタログに定義されている場所に格納されます。

    Databricks では、カタログは通常、データ分離の論理単位を表すため、カタログ レベルでマネージド ストレージを割り当てることをお勧めします。 同じ格納場所を共有する複数のカタログ内のデータに問題がない場合は、メタストア レベルの格納場所にデフォルトできます。 ワークスペースが自動的に Unity Catalog 有効になっている場合、デフォルトによるメタストア レベルのストレージはありません。 アカウント管理者は、メタストア レベルのストレージを構成するオプションがあります。 「Unity Catalog で管理ストレージの場所を指定する」と「既存のメタストアに管理ストレージを追加する」を参照してください。

    マネージドストレージをカタログに割り当てるには、以下を作成する必要があります。

    • ストレージ資格情報

    • そのストレージ資格情報を参照する 外部ロケーション

    これらのオブジェクトの概要と作成手順については、「 Unity Catalog を使用してクラウドオブジェクトストレージに接続する」を参照してください。

  2. 同じメタストアを共有する他のワークスペースからのアクセスを制限する場合は、新しいカタログをワークスペースにバインドします。

    「特定のワークスペースへのカタログ アクセスを制限する」を参照してください。

  3. カタログに対する特権を付与します。

詳細な手順については、「 カタログの作成」を参照してください。

カタログ作成例

以下の例は、マネージドストレージを使用してカタログを作成し、そのカタログに対する SELECT 特権を付与する方法を示しています。

CREATE CATALOG IF NOT EXISTS mycatalog
  MANAGED LOCATION 'gs://depts/finance';

GRANT SELECT ON mycatalog TO `finance-team`;

「カタログエクスプローラ」(Catalog Explorer) を使用してカタログを作成する手順など、その他の例については、「 カタログの作成」を参照してください。

スキーマの作成

スキーマは、カタログよりも詳細なグループ (部門やプロジェクトなど) を表します。 カタログ内のすべてのテーブルとその他の Unity Catalog オブジェクトは、スキーマに含まれています。 新しいカタログの所有者は、カタログにスキーマを作成できます。 ただし、スキーマを作成する機能を他のユーザーに委任して、カタログに対する CREATE SCHEMA 特権を付与することもできます。

詳細な手順については、「 スキーマの作成」を参照してください。

(オプション)メタストア管理者ロールを割り当てる

ワークスペースで Unity Catalog が自動的に有効になった場合、メタストア管理者ロールはデフォルトで割り当てられません。 メタストア管理者には、ワークスペース管理者にはない権限があります。

必要に応じて、メタストア管理者を割り当てることができます。

メタストア管理者ロールの詳細と割り当て手順については、「 メタストア管理者を割り当てる」を参照してください。

Hive metastoreのテーブルをUnity Catalogテーブルにアップグレードする

ワークスペースがUnity Catalogで有効になる前にサービスにあった場合、引き続き使用したいデータを含むHive metastoreが存在する可能性があります。 Databricks 、 Hive metastoreによって管理されるテーブルをUnity Catalogメタストアに移行することをお勧めします。

「Hive テーブルとビューを Unity Catalog にアップグレードする」を参照してください。

(オプション)Hive metastoreとの仕事を続ける

ワークスペースに、引き続き使用したいデータを含むHive metastore があり、 によって管理されているテーブルをHive metastore Unity Catalogメタストアにアップグレードする という推奨事項に従わない場合は、 メタストアのデータと並行してHive metastore Unity Catalogのデータを使用し続けることができます。

Hive metastore Unity Catalogインターフェースでは hive_metastore という名前のカタログとして表されます。 クエリを更新して hive_metastore カタログを指定することなくHive metastore内のデータを引き続き操作するには、ワークスペースのデフォルト カタログを hive_metastore に設定します。 「デフォルトカタログの管理」を参照してください。

ワークスペースで Unity Catalog が有効になった時期によっては、既定のカタログが既に hive_metastoreされている場合があります。

(オプション)メタストア レベルのストレージを作成する

Databricks では、メタストア内のカタログごとに個別のマネージドストレージの場所を作成することをお勧めしますが (スキーマについても同じことができます)、代わりにメタストア レベルでマネージドロケーションを作成し、それを複数のカタログとスキーマのストレージとして使用することもできます。

メタストア レベルのストレージが必要な場合は、メタストア管理者も割り当てる必要があります。 「 (省略可能) メタストア管理者ロールを割り当てる」を参照してください。

メタストア レベルのストレージは、次の条件に当てはまる場合にのみ 必要です

  • Databricks-to-Databricks Delta Sharingを使用してノートブックを共有したいと考えています。

  • 個人のステージング場所に依存する Databricks パートナー製品統合を使用します (非推奨)。

マネージドストレージロケーションの階層の詳細については、「 ストレージ内のデータが物理的に分離されている」を参照してください。

メタストア レベルのストレージのないメタストアにストレージを追加する方法については、「 既存のメタストアに管理ストレージを追加する」を参照してください。

2024 年 3 月 6 日より前にUnity Catalogに対して有効になったほとんどのワークスペースには、メタストア レベルのストレージ ルートがあります。

次のステップ