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

従来のワークスペースHive metastoreのHive metastoreフェデレーションを有効にする

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

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

始める前に

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

各ステップの具体的な要件は、以下のとおりです。

ステップ 1: Unity Catalog をHive metastoreに接続する

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

必要条件

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

接続を作成する

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

注記

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

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

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

  2. クイック アクセス ページで、 データの追加] > [接続の追加 をクリックします。

  3. 接続のセットアップ ウィザードの 接続の基本 ページで、わかりやすい 接続名 を入力します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

必要条件

クラウド ストレージとDatabricksのアクセス許可の要件については、「クラウド ストレージを Databricksに接続するための外部ロケーションを作成する」の「始める前に」を参照してください。

ワークスペースのレガシー DBFSルートの外部ロケーションを作成する場合は、「DBFSルート内のデータの外部ロケーションを作成する」の「始める前に」を参照してください。

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

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

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

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

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

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

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

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

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

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

注記

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

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

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

必要条件

権限要件 :

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

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

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

  • カタログの所有権 USE CATALOG

コンピュートの要件 :

  • Catalog Explorerを使用してカタログを作成するには、コンピュートは必要ありません。
  • 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 metastore フェデレーションによってサポートされるフォーリンカタログのセキュリティの追加レイヤーです。 「許可されたパスとは」を参照してください。

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

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

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

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

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

  9. フォーリンカタログに Hive metastore メタデータを入力します。

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

注記

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

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

OWNER であるか、テーブルに対する MANAGE 権限を持っている必要があります。フォーリンカタログ、SCHEMA、TABLEREFRESHを参照してください。