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

レガシーワークスペースHive メタストアのHive メタストアフェデレーションを有効にする

この記事では、レガシーDatabricksのHive メタストア をフェデレーションして、組織がHive メタストア を使用してUnity Catalog テーブルを操作できるようにする方法について説明します。

Hive メタストアフェデレーションの概要については、Hiveメタストアフェデレーション:Hiveメタストアに登録されているテーブルをUnity Catalog で管理できるようにしますをご覧ください。

必要条件​

Hive metastore フェデレーションでサポートされているサービスと機能の一覧 (要件と機能のサポート) を確認します。

以下の各ステップの具体的な要件を示します。

ステップ 1: Unity Catalog をHive メタストアに接続する​

この手順では、データベースにアクセスするためのパスと資格情報を指定するUnity Catalogの 接続 セキュリティ保護オブジェクト、この場合はDatabricksワークスペースのレガシーHiveメタストアに対する接続オブジェクトを作成します。

必要条件​

  • Unity Catalog メタストアに対する CREATE CONNECTION 特権。

接続を作成する​

接続では、外部データベースシステムにアクセスするためのパスと認証情報を指定します。接続を作成するには、カタログエクスプローラーを使用するか、Databricksノートブックまたは Databricks SQLクエリーエディタで CREATE CONNECTION SQLコマンドを使用できます。

注記

Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。

レガシーDatabricks Hive metastoreへの接続を設定する場合は、APIリクエストにオプション"builtin": "true"を含めます。

必要な権限: メタストア管理者またはCREATE CONNECTION権限を持つユーザー。

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。

  2. カタログ パネルの上部にある追加またはプラスアイコンアイコンをクリックし、メニューから 接続の作成を 選択します。

  3. [接続の基本] ページで、ユーザーフレンドリな 接続名 を入力します。

  4. 接続タイプ に Hive メタストア を、 メタストア・タイプ に 内部 を選択します。

  5. (オプション)コメントを追加します。

  6. 次へ をクリックします。

  7. (オプション) 接続の詳細 ページで、 Hiveの ウェアハウス ディレクトリ への完全修飾パスを入力します。

    これは、デフォルトの場所を使用しない場合にのみ必要です。

  8. 接続の作成 をクリックします。

  9. カタログの基本 ページで、フォーリンカタログの名前を入力します。

  10. 承認パス で、カタログからアクセスできるクラウドストレージパスを選択します。これらのパスに該当するテーブルのみを、フェデレーテッドカタログを介してクエリできます。パスは外部ロケーションでカバーされている必要があります。 詳細については、承認されたパスとはを参照してください。

    カタログを作成した後、承認されたパスを編集できます。「承認済みパスとは何ですか?」を参照してください。

  11. [ カタログを作成 ] をクリックします。

  12. アクセス ページで、作成したカタログにユーザーがアクセスできるワークスペースを選択します。 すべてのワークスペースにアクセス権がある を選択するか、 ワークスペースに割り当て をクリックし、ワークスペースを選択して 割り当て をクリックします。

  13. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を追加します。テキスト ボックスにユーザーまたはグループの入力を開始し、返された結果でユーザーまたはグループをクリックします。

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

    1. 付与 をクリックします。

    2. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。テキスト ボックスにユーザーまたはグループの入力を開始し、返された結果でユーザーまたはグループをクリックします。

    3. 各ユーザーまたはグループに付与する 権限プリセット を選択します。デフォルトでは、すべてのアカウントユーザーに BROWSE 権限が付与されます。

      • ドロップダウンメニューから「 データリーダー」 を選択して、カタログ内のオブジェクトに対する read 権限を付与します。
      • ドロップダウンメニューから「 データエディタ 」を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。
      • 付与する権限を手動で選択します。
    4. 付与 をクリックします。

  15. 次へ をクリックします。

  16. [ メタデータ ] ページで、必要に応じてタグをキーと値のペアとして指定します。詳細については、「セキュリティ 保護可能なオブジェクト Unity Catalog タグを適用する」を参照してください。

  17. (オプション)コメントを追加します。

  18. 保存 をクリックします。

ステップ 2: 内部レガシ システムのデータ用の外部ロケーションを作成する Hive メタストア​

この手順では、 Unity Catalog で外部ロケーションを設定して、従来の内部 Hive メタストアに登録されたデータを保持するクラウド ストレージ ロケーションへのアクセスを制御します。

外部ロケーションは、ストレージ資格情報をクラウドストレージコンテナパスに関連付けるUnity Catalogセキュリティ保護可能なオブジェクトです。

外部ロケーションを作成するためのオプション​

DatabricksにおいてUnity Catalogで外部ロケーションを作成するために推奨されるプロセスは、状況によって異なります。

  • Unity Catalogでストレージ認証情報を作成していない場合は、IAMロールとストレージ認証情報を作成する自動セットアップを使用して外部ロケーションを作成できます。自動セットアップの手順に従ってください。
  • Unity Catalogで作成されたストレージ資格情報が既にある場合は、 Catalog Explorer または SQLを使用して外部ロケーションを手動で作成します。
  • DBFS マウントまたはDBFSルートにデータを格納する内部Databricks Hive metastoreをフェデレーションする場合は、カタログ エクスプローラーまたは SQLを使用して外部ロケーションを手動で作成し、[ マウントからコピー] オプションDBFS 使用します。これは、該当するストレージ資格情報が存在するかどうかに関係なく実行します。

外部ロケーションでフォールバック モードを有効にする​

Unity Catalogで外部ロケーションを作成するとすぐに、その外部ロケーションによって表されるパスへのアクセスは、Unity Catalog対応コンピュートでクエリを実行するときにUnity Catalog権限によって強制されます。これにより、パスにアクセスするための適切な Unity Catalog アクセス許可を持たない既存のワークロードが中断される可能性があります。

外部ロケーションがフォールバックモードの場合、システムはまず、そのロケーションに対するクエリプリンシパルの Unity Catalog アクセス許可を確認し、それが成功しない場合は、インスタンスプロファイルや Apache Spark 設定プロパティなど、既存のクラスターまたはノートブックスコープの認証情報を使用してフォールバックし、既存のワークロードが中断なく実行し続けるようにします。

フォールバックモードは、レガシーワークロードの移行中に便利です。Unity Catalogアクセス許可を使用して正常に実行するようにワークロードを更新したら、フォールバック モードを無効にして、従来のクラスター スコープの資格情報がUnity Catalog データ ガバナンスのバイパスに使用されないようにする必要があります。

フォールバック モードは、カタログエクスプローラ または Unity Catalog 外部ロケーション REST APIを使用して有効にできます。

必要な権限 : 外部ロケーションの所有者。

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。
  2. クイック アクセス ページで、 外部データ > をクリックします。
  3. 更新する外部ロケーションを選択します。
  4. フォールバック モード トグルをオンにし、 有効にする をクリックして確定します。

ステップ 3: フォーリンカタログを作成する​

注記

カタログエクスプローラ の接続作成ウィザードを使用してステップ 1 を完了した場合は、この手順をすでに完了している可能性があります。ステップ 1 の完了時にフォーリンカタログを作成しなかった場合、または SQL を使用して接続を作成した場合は、このセクションの指示に従う必要があります。

このステップでは、ステップ 1 で作成した接続を使用して、ステップ 2 で作成した外部ロケーションを指すフォーリンカタログを Unity Catalog で作成します。 フォーリンカタログ は、外部データ システム内のデータベースまたはカタログをミラーリングする Unity Catalog 内のセキュリティ保護可能なオブジェクトであり、 Databricks ワークスペース内のそのデータに対してクエリを実行し、アクセスは Unity Catalogによって管理されます。 この場合、ミラーリングされたカタログは、 Hive メタストアに登録されているデータです。

ユーザーまたはワークフローがフォーリンカタログと対話するたびに、メタデータは Hive メタストアから同期されます。

必要条件​

権限要件 :

フォーリンカタログを作成するには:

  • Unity Catalog メタストアに対する CREATE CATALOG 特権。
  • 接続の所有権または接続に対する CREATE FOREIGN CATALOG 特権のいずれか。
  • フォーリンカタログに許可されたパスを入力するには、それらのパスをカバーする外部ロケーションに対する CREATE FOREIGN SECURABLE 権限が必要です。 外部ロケーションの所有者は、デフォルトでこの権限を持ちます。

フォーリンカタログを操作するには:

  • カタログの所有権または USE CATALOG

コンピュートの要件 :

  • カタログエクスプローラを使用してカタログを作成するには、コンピュートは必要ありません。
  • SQL を使用してカタログを作成するには: Databricks Runtime 13.3 LTS 以降。
  • カタログを操作するには、 Databricks Runtime 13.3 LTS、14.3 LTS、15.1 以降の標準アクセスモードを備えたコンピュート。

フォーリンカタログを作成する​

フォーリンカタログを作成するには、カタログ エクスプローラー、または Databricks ノートブックまたは SQL クエリ エディターのCREATE FOREIGN CATALOG SQL コマンドを使用できます。

フォーリンカタログの管理と操作も参照してください。

注記

Unity Catalog API を使用することもできます。 Databricks REST API リファレンスの カタログの作成 を参照してください。

  1. Databricks ワークスペースで、データアイコン。[カタログ]をクリックして カタログエクスプローラー を開きます。

  2. クイックアクセス ページで、 データを追加 ボタンをクリックし、 カタログを追加 を選択します。

  3. カタログ名 を入力し、カタログの タイプ で 外部 を選択します。

  4. ステップ 1 で作成した 接続 をドロップダウンから選択します。

  5. 認証済みパス フィールドに、ステップ 2 で外部ロケーションとして定義したクラウドストレージロケーションへのパスを入力します。たとえば、s3://demo, s3://depts/finance。

    承認されたパスは、 Hive メタストア フェデレーションによってサポートされるフォーリンカタログのセキュリティの追加レイヤーです。 「許可されたパスとは」を参照してください。

  6. [ストレージの場所] フィールドで、カタログ メタデータを保存するクラウド ストレージ内の場所を指定します。たとえば、 s3://my-catalog-metadata 。

  7. 作成 をクリックします。

  8. (オプション) 構成 をクリックして、カタログに対するアクセス許可の付与とタグの追加を順を追って説明するウィザードを開きます。 これらの手順は、後で実行することもできます。

    Unity Catalog での特権の管理とUnity Catalog のセキュリティ保護可能なオブジェクトへのタグの適用を参照してください。

  9. (オプション)カタログを特定のワークスペースにバインドします。

    安心により、 Unity Catalogメタストアに接続されている任意のワークスペースからカタログにアクセスできます (ユーザー権限によって制限されます)。 特定のワークスペースからのみアクセスを許可したい場合は、 「ワークスペース」 タブに移動してワークスペースを割り当てます。 ワークスペースカタログのバインディングを参照してください。

  10. フォーリンカタログに Hive メタストア メタデータを入力します。

    ユーザーまたはワークフローがフォーリンカタログと対話するたびに、メタデータは Hive metastoreから同期されます。 最初のインタラクションでは、Unity Catalog にカタログが入力され、その内容が カタログエクスプローラ UI に表示されます。カタログにデータを取り込むには、カタログエクスプローラ で サポートされているコンピュート リソース を選択して開始します。 カタログの所有者 (カタログの作成により所有者になります) または USE CATALOG 権限を持つユーザーである必要があります。

注記

フォーリンテーブルのストレージ・ロケーションが DBFSにあり、テーブルをバックアップする DBFS ・マウント・ポイントが、テーブルが最後にアクセスされてから別のパスに再マップされている場合、テーブルへのアクセスは UC_RESOLVED_DBFS_PATH_MISMATCH エラー・コードで失敗します。 次のコマンドを使用して、解決された DBFS の場所を更新し、エラーを修正します。

SQL
REFRESH FOREIGN TABLE my_federated_catalog.schema.table RESOLVE DBFS LOCATION;

OWNER であるか、テーブルに対する MANAGE 権限を持っている必要があります。REFRESH FOREIGN (CATALOG, SCHEMA, and TABLE)を参照してください。