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

Unity Catalogと従来のHive metastoreとの連携

この記事では、Hive metastore Databricksワークスペースが に対して有効になっている場合に、ワークスペースごとの を引き続き使用するための 1Unity Catalog つの方法について説明します。

ワークスペースが Unity Catalogに対して有効になる前にサービスにあった場合は、引き続き使用するデータを含む組み込み Hive metastore がある可能性があります。 では 、Databricks Hive metastoreフェデレーション を使用して、 をミラーリングするフェデレーション カタログをUnity CatalogHive metastore に作成し、最終的にはすべてのレガシ ワークロードをそのフェデレーション カタログを使用するように移行することをお勧めします。ただし、 Hive metastore フェデレーションプロセスをまだ開始していない場合は、この記事を使用して、レガシ Hive metastore に登録されているデータと Unity Catalogに登録されているデータを操作する方法を学習できます。

をクエリするHive metastoreUnity Catalog

Unity Catalogメタストアは付加的であるため、 のワークスペースごとのHive metastore Databricksで使用できます。Hive metastoreは、3 レベルの名前空間に hive_metastore という最上位のカタログとして表示されます。

たとえば、レガシ Hive metastore のsalesスキーマで sales_raw というテーブルを参照するには、次の表記を使用します。

SQL
SELECT * from hive_metastore.sales.sales_raw;

USE ステートメントでカタログとスキーマを指定することもできます。

SQL
USE hive_metastore.sales;
SELECT * from sales_raw;

Unity Catalog と Hive metastore のアクセス制御

レガシー テーブルアクセスコントロール を構成した場合、 は、標準アクセスモードで実行されているクラスターの カタログ内のデータに対して、これらのアクセス制御を引き続き適用します。Hive metastoreDatabrickshive_metastoreUnity Catalog のアクセスモデルは、 DENY ステートメントがないなど、従来のアクセス制御とは少し異なります。 Hive metastoreはワークスペースレベルのオブジェクトです。hive_metastoreカタログ内で定義された権限は、常にワークスペース内のローカルユーザーとグループを参照します。Unity Catalog権限モデルと従来のテーブルアクセスコントロールの比較を参照してください。

従来のテーブルアクセスコントロールと比較した Unity Catalog 特権モデル

のアクセス制御モデルは、従来の のUnity Catalog テーブルアクセスコントロールHive metastore とは次の点で異なります。

  • アカウント グループ : Access control ポリシー in Unity Catalog はアカウント グループに適用され、 Hive metastore のアクセス制御ポリシー はワークスペース-local グループに適用されます。 「Databricks のグループの種類」を参照してください
  • カタログまたはスキーマ内のオブジェクトに対するすべての操作には、カタログとスキーマに対するUSE CATALOGおよびUSE SCHEMAのパーミッションが必要です 。テーブルに対するプリンシパルの権限に関係なく、プリンシパルは、スキーマにアクセスするための親カタログに対する USE CATALOG 権限と、スキーマ内のオブジェクトにアクセスするための USE SCHEMA 権限も必要です。一方、ワークスペース レベルのテーブルアクセスコントロールでは、ルート カタログで USAGE を付与すると、すべてのデータベースに対する USAGE が自動的に付与されますが、ルート カタログでの USAGE は必要ありません。
  • ビュー : Unity Catalog では、ビューの所有者は、ビューの参照されるテーブルとビューの所有者である必要はありません。 SELECT権限があれば、ビューの親スキーマのUSE SCHEMAと親カタログのUSE CATALOGとともに十分です。ワークスペースレベルのテーブルアクセスコントロールでは、ビューの所有者は、参照されるすべてのテーブルとビューの所有者である必要があります。
  • ANY FILE または ANONYMOUS FUNCTIONのサポートなし : Unity Catalog には、特権のないユーザーが特権コードを実行できるようにするANY FILEまたはANONYMOUS FUNCTIONのセキュリティ保護可能なオブジェクトの概念はありません。
  • READ_METADATA権限なし : Unity Catalog は、メタデータを表示するためのアクセスを別の方法で管理します。「Unity Catalog の特権とセキュリティ保護可能なオブジェクト」を参照してください。

Unity CatalogオブジェクトとHive metastoreオブジェクト間の結合

3 レベルの名前空間表記を使用すると、 Unity Catalog メタストアのデータを従来の Hive metastoreのデータと結合できます。

注記

レガシ Hive metastore のデータとの結合は、そのデータが存在するワークスペースでのみ機能します。 このような結合を別のワークスペースで実行しようとすると、エラーが発生します。 Databricks では、従来のテーブルとビューを Unity Catalog にアップグレード することをお勧めします。

次の例では、order_id フィールドが等しい場合に、レガシ Hive metastore メタストアの sales_current テーブルと Unity Catalog メタストアの sales_historical テーブルを結合します。

SQL
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;

デフォルトカタログ

デフォルト カタログは、 Unity Catalogが有効になっているワークスペースごとに構成されます。

データ操作を実行するときに最上位のカタログ名を省略すると、デフォルトのカタログが想定されます。

ワークスペースに対して最初に構成されたデフォルト カタログは、ワークスペースが Unity Catalogに対してどのように有効にされたかによって異なります。

  • ワークスペースが自動的に Unity Catalog 有効になっている場合、 ワークスペース カタログ はデフォルト カタログとして設定されています。 「Unity Catalog の自動有効化」を参照してください。
  • ワークスペースで手動で Unity Catalog が有効になっている場合、hive_metastore カタログはデフォルト カタログとして設定されています。

既存のワークスペース内で Hive metastore から Unity Catalog に移行する場合は、 Hive metastore を参照する既存のコードに影響を与えないように、hive_metastore をデフォルト カタログとして使用するのが理に Hive metastore。

デフォルト カタログを取得して切り替える方法については、「 デフォルト カタログの管理」を参照してください

クラスター スコープのデータ アクセス権限

Hive metastore を Unity Catalogと共に使用すると、クラスターに関連付けられたデータ アクセス資格情報は、Hive metastoreデータへのアクセスに使用されますが、Unity Catalogに登録されているデータへのアクセスには使用されません。

ユーザーが Unity Catalog の外部にあるパス (テーブルまたは外部ロケーションとして登録されていないパスなど) にアクセスする場合は、クラスターに割り当てられたアクセス資格情報が使用されます。

Amazon S3 への接続」を参照してください。

レガシ テーブルを Unity Catalog にアップグレードする

Hive metastore内のテーブルは、組み込み監査、リネージ、アクセス制御など、Unity Catalog が導入するセキュリティおよびガバナンス機能の完全なセットの恩恵を受けません。Databricks では、Hive metastore フェデレーションを使用して、Hive metastore に登録されているデータを Unity Catalogに移行するか、レガシ テーブルを Unity Catalogに追加して直接アップグレードすることをお勧めします。