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

プレビュー

この機能はパブリックプレビュー段階です。

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

Hive metastoreHive metastoreフェデレーションの概要については、「 フェデレーション:Unity Catalog に登録されたテーブルを管理するための の有効化 」を参照してください。Hive metastore

始める前に

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. 作成をクリックします。

ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。

CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
  OPTIONS (builtin true);

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

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

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

要件

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

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

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

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

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

で外部ロケーションを作成するとすぐに、その外部ロケーションで表されるパスへのアクセスは、Unity Catalog Unity CatalogUnity Catalog対応コンピュート ( シングル ユーザー、共有、またはSQL ウェアハウス) でクエリを実行するときに、 アクセス許可によって適用されます。これにより、パスにアクセスするための適切な Unity Catalog アクセス許可を持たない既存のワークロードが中断される可能性があります。

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

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

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

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

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

  2. クイック アクセス ページで、外部データ データ (>) をクリックします。

  3. 更新する外部ロケーションを選択します。

  4. [フォールバック モード] トグルをオンにし、[有効にする] をクリックして確定します。

次の curl の例は、外部ロケーションを作成するとき、および既存の外部ロケーションを更新するときにフォールバック モードを有効にする方法を示しています。

新しい外部ロケーションの作成:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "gs://external_location_bucket/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

外部ロケーションの更新:

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

ステップ 3: フェデレーションカタログを作成する

このステップでは、ステップ 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 で外部ロケーションとして定義したクラウドストレージロケーションへのパスを入力します。たとえば、gs://demo,gs://depts/finance.

    許可されたパスは、フェデレーテッド・カタログ専用のセキュリティ・レイヤーです。 「許可されたパスとは」を参照してください。

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

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

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

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

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

  9. フェデレーテッド・カタログに Hive metastore メタデータを取り込みます。

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

    ノートブックまたはSQLクエリーエディタで次のSQLコマンドを実行します。括弧内の項目はオプションです。プレースホルダーの値を置き換えます。

    • <catalog-name>:Databricksのカタログの名前。

    • <connection-name>: ステップ 1 で作成した接続オブジェクトの名前。

    • <path1>,<path2>: ステップ 2 で外部ロケーションとして定義したクラウドストレージロケーションへのパス。たとえば、 gs://demo,gs://depts/finance. 許可されたパスは、フェデレーテッド・カタログ専用のセキュリティ・レイヤーです。 「許可されたパスとは」を参照してください。

    CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
    OPTIONS (authorized_paths '<path1>,<path2>');
    

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

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