Share via


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

この記事では、既存のワークスペース ローカル Hive メタストアに登録されているテーブルとビューを Unity Catalog にアップグレードする方法について説明します。 Hive テーブルは、Unity Catalog でマネージド テーブルまたは外部テーブルにアップグレードできます。

  • マネージド テーブルは、Unity Catalog にテーブルを作成するために優先される方法です。 Unity Catalog は、ライフサイクル、ファイル レイアウト、ストレージのすべてを管理します。 Unity Catalog では、パフォーマンスが自動的に最適化されます。 マネージド テーブルでは、常に Delta テーブル形式を使用します。

    マネージド テーブルは、Unity Catalog 用に予約したマネージド ストレージの場所に存在します。 このストレージ要件により、既存の Hive テーブルをマネージド テーブルとして Unity Catalog にコピーする場合は、[CLONE] または [CREATE TABLE AS SELECT] (CTAS) を使用する必要があります。

  • 外部テーブルは、データ ライフサイクル、ファイル レイアウト、ストレージの場所が Unity Catalog によって管理されないテーブルです。 外部テーブルには複数のデータ形式がサポートされています。

    通常、外部テーブルを使用するのは、Databricks 以外のコンピューティング (つまり、Databricks クラスターや Databricks SQL ウェアハウスを使用しない) を使用してデータに直接アクセスする必要がある場合のみです。 また、外部テーブルは、データをコピーすることなく、既存のデータを Unity Catalog に迅速に登録できるため、移行シナリオにも便利です。 これは、外部テーブルのデータが予約済みマネージド ストレージに存在する必要がないという事実によるものです。

Unity Catalog のマネージド テーブルと外部テーブルの詳細については、「テーブル」を参照してください。

Hive から Unity Catalog への移行オプション

Hive テーブルを Unity Catalog に移行する準備ができたら、ユース ケースに応じて次のようなオプションがあります。

移行ツール 説明 Hive テーブルの要件 Unity Catalog テーブルを作成済み このサービスを使う理由
UCX ワークスペースの Unity Catalog 移行への準備状況を評価し、ID、アクセス許可、ストレージの場所、およびテーブルを Unity Catalog に移行するワークフローを実行する、コマンド ライン ユーティリティとその他のツールの包括的なセットです。 UCX は GitHub の databrickslabs/ucx で利用できます。 マネージド Hive テーブルまたは外部 Hive テーブル マネージドまたは外部 Hive テーブルを Unity Catalog にアップグレードするだけでなく、包括的なワークスペースのアップグレード計画ツールが必要です。 Hive メタストアに大量のデータがあるワークスペースをアップグレードする必要があります。 スクリプトの実行に慣れています。 Hive テーブルを Unity Catalog マネージド テーブルに一括アップグレードする場合は、このオプションしかありません。 UCX は、他の Databricks Labs プロジェクトと同様に GitHub の公開リポジトリであり、Databricks で直接サポートされるものではありません。
Unity Catalog アップグレード ウィザード スキーマ (データベース) 全体と複数のマネージド テーブルを外部テーブルを Hive メタストアから Unity Catalog メタストアに外部テーブルとして一括コピーできるカタログ エクスプローラー機能。 アップグレード ウィザードは、選択したテーブルで SYNC コマンドを実行し、元の Hive テーブルはそのまま残ります。 ソース Hive テーブルの変更を選択するために、定期的なアップグレードをスケジュールするオプションがあります。 マネージド Hive テーブルまたは外部 Hive テーブル 外部のみ Hive テーブルを Unity Catalog の外部テーブルにすばやくアップグレードする場合、視覚的なインターフェイスが優先されます。 ソース Hive テーブルが変更されたときに定期的な同期をスケジュールする機能は、Unity Catalog への移行中に Hive と Unity Catalog の “ハイブリッド” のワークスペースを管理するのに役立つツールです。
SYNC SQL コマンド SYNC を使用すると、Hive メタストア内の外部テーブルおよびマネージド テーブル (マネージド テーブルが DBFS ルートと呼ばれることもある Databricks ワークスペース ストレージの外部に格納されている場合) を Unity Catalog 内の外部テーブルにコピーできます。 個々のテーブルを同期することも、スキーマ全体を同期することもできます。

SYNC は、Hive メタストアの新しい変更を選択して Unity Catalog に同期するためにスケジュールで実行するように設計されています。
マネージド Hive テーブルまたは外部 Hive テーブル 外部のみ Hive テーブルを Unity Catalog の外部テーブルにすばやくアップグレードする場合、視覚的なインターフェイスではなく SQL コマンドの使用が優先されます。

ソース Hive テーブルが変更されたときに既存の Unity Catalog テーブルの更新を実行する定期的な SYNC のスケジュールは、Unity Catalog への移行中に Hive と Unity Catalog の “ハイブリッド” のワークスペースを管理するのに役立つツールになります。

SYNC を使用して Databricks ワークスペース ストレージにあるマネージド テーブルをアップグレードすることはできないため、これらのテーブルには CREATE TABLE CLONE を使用します。
CREATE TABLE CLONE SQL コマンド CREATE TABLE CLONE を使用すると、Hive メタストアのマネージド テーブルを Unity Catalog のマネージド テーブルにアップグレードできます。 個々のテーブルを複製できます。

ディープ複製は、既存のテーブルのメタデータに加えて、ソース テーブルのデータを複製先にコピーするため、優先されます。
Delta、Parquet、Iceberg 形式の Hive テーブルが管理対象です。 Parquet および Iceberg ソース テーブルの複製には、いくつかの特別な要件と制限事項があります。「Parquet テーブルと Iceberg テーブルを複製するための要件と制限事項」を参照してください。 マネージドのみ Hive マネージド テーブルをUnity Catalog 管理テーブルに移行して、Unity Catalog データ ガバナンスを最大限に活用する場合、Hive テーブルは “Hive テーブル要件” セルに一覧表示された基準を満たしています。

Hive テーブルが “Hive テーブル要件” を満たしていない場合は、CREATE TABLE AS SELECT SQL コマンドを使用して、Hive テーブルを Unity Catalog マネージド テーブルにアップグレードできます。 ただし、ほとんどの場合 CLONE が優先されます。 複製は CREATE TABLE AS SELECT よりも構文が簡単です。パーティション分割、形式、インバリアント、NULL 値の許容、ストリーミング、COPY INTO、およびその他のメタデータはソース テーブルから複製されるため、指定する必要がありません。

この記事では、UCX 主導のアップグレード プロセス以外のすべてを実行する方法について説明します。 Databricks では、ほとんどのワークスペースのアップグレード シナリオで UCX を推奨しています。 ただし、より単純なユースケースの場合は、ここで説明するツールの 1 つ以上のツールよりも優先される場合があります。

始める前に

このセクションでは、アクセス許可とコンピューティング要件とともに、準備が必要な移行の影響について説明します。

影響を理解する

新しい Unity Catalog テーブルを使用するようにワークロードを変更する場合は、次のような動作を変更する必要がある場合があります。

  • Unity Catalog では、Hive とは異なる方法でパーティションが管理されます。 パーティションを直接操作する Hive コマンドは、Unity Catalog によって管理されるテーブルではサポートされません。
  • CREATE TABLE CLONE を実行してもテーブル履歴は移行されません。 Unity Catalog に複製した Hive メタストア内のテーブルは、すべて新しいテーブルとして扱われます。 Delta Lake タイム トラベルまたは移行前の履歴に依存するその他の操作は実行できません。

詳細については、「Unity Catalog と従来の Hive メタストアの使用」を参照してください。

要件

移行を実行するには、以下が必要です。

  • Unity Catalog メタストアと少なくとも 1 つの Unity Catalog カタログを持つワークスペース。 「Unity Catalog の設定と管理」をご参照ください。

  • テーブルを移行する Unity Catalog カタログのアクセス許可。 これらの特権に関する要件は、この記事で説明する各種手続きの冒頭に列挙されています。

  • Unity Catalog 外部テーブルへの移行の場合: Unity Catalog で定義されたストレージの資格情報と外部の場所、および外部の場所に対する CREATE EXTERNAL TABLE 特権。

  • 次の要件のどちらも満たす Azure Databricks コンピューティングへのアクセス:

    • Unity Catalog (シングル ユーザーまたは共有アクセス モードを使用する、SQL ウェアハウスまたはコンピューティング リソース) をサポートします。
    • Hive メタストア内のテーブルへのアクセスを許可します。

    共有アクセス モードを使用するコンピューティング リソースは、既定でレガシ テーブル アクセス制御が有効になっているため、そのアクセス モードを使用する場合は、移行元の Hive メタストアでテーブル アクセス制御特権がある必要があります。 次の SQL コマンドを使用して、自分自身にアクセス権を付与することができます。

    GRANT all_privileges ON catalog hive_metastore TO `<user>`
    

    あるいは、シングル ユーザー アクセス モードでコンピューティング リソースを使用することもできます。

Hive メタストア内のオブジェクトに対する特権の管理の詳細については、「Hive メタストアの特権とセキュリティ保護可能なオブジェクト (レガシ)」を参照してください。 Unity Catalog メタストアでオブジェクトに対する特権を管理する方法の詳細については、「Unity Catalog の特権の管理」を参照してください。

Hive メタストアで管理されるテーブルを特定する

テーブルが現在 Unity Catalog に登録されているかどうかを確認するには、カタログ名を調べます。 カタログ hive_metastore 内のテーブルは、ワークスペース ローカル Hive メタストアに登録されています。 リストにある他のカタログはすべて、Unity Catalog によって管理されています。

カタログ エクスプローラーを使用して hive_metastore カタログのテーブルを表示するには、次の操作を行います。

  1. サイドバーで [カタログ] アイコン[カタログ] をクリックします。
  2. カタログ ウィンドウで、hive_metastore カタログを参照し、スキーマ ノードを展開します。

また、カタログ ウィンドウのフィルター フィールドを使用して、特定のテーブルを検索することもできます。

アップグレード ウィザードを使用して、Hive メタストアから Unity Catalog 外部テーブルにスキーマまたは複数のテーブルをアップグレードする

Catalog Explorer アップグレード ウィザードを使用すると、Azure Databricks の既定の Hive メタストアから Unity カタログ メタストアに、完全なスキーマ (データベース) と複数の外部テーブルまたはマネージド テーブルをコピーできます。 アップグレードされたテーブルは、Unity Catalog の外部テーブルになります。

アップグレード ウィザードを使用するタイミングの決定については、「Hive から Unity Catalog への移行オプション」を参照してください。

要件

データ形式の要件:

コンピューティングの要件:

  • Unity Catalog をサポートするコンピューティング リソース。 開始する前にを参照してください。

Unity Catalog オブジェクトとアクセス許可の要件:

  • Unity Catalog のテーブルの場所パスへのアクセスを認証する、Azure マネージド ID またはサービス プリンシパルのストレージ資格情報
  • 先ほど作成したストレージ資格情報とクラウド テナント上のデータへのパスを参照する外部の場所
  • CREATE EXTERNAL TABLEアップグレードするテーブルの外部の場所に対するアクセス許可。

Hive テーブルのアクセス要件:

  • 共有アクセス モードを使用するコンピューティングの場合は、レガシ テーブル アクセス制御を使用して付与された Hive メタストア内のテーブルへのアクセスが必要です。 開始する前にを参照してください。

アップグレード プロセス

  1. Catalog Explorer を開くには、サイド バーで カタログ アイコンカタログ をクリックします。

  2. カタログとして hive_metastore を選択し、アップグレードするスキーマ (データベース) を選択します。

    データベースの選択

  3. スキーマ詳細ビューの右上にある [アップグレード] をクリックします。

  4. アップグレードするすべてのテーブルを選択し、[次へ] をクリックします。

    アップグレード ウィザードを使用してアップグレードできるのは、Unity カタログでサポートされている形式外部テーブルのみです。

  5. 各テーブルの宛先カタログ、スキーマ (データベース)、所有者を設定します。

    ユーザーは、新しく作成されたテーブルに、そのカタログとスキーマに対する特権のコンテキストでアクセスできます。

    テーブルの所有者には、SELECTMODIFY を含め、テーブルに対するすべての特権があります。 所有者を選択しない場合は、ユーザーを所有者としてマネージド テーブルが作成されます。 Databricks では通常、テーブルの所有権をグループに付与することをお勧めします。 Unity Catalog でのオブジェクトの所有権の詳細については、「Unity Catalog オブジェクトの所有権を管理する」を参照してください。

    同じカタログとスキーマを複数のテーブルに割り当てるには、テーブルを選択し、[Set destination] (宛先の設定) ボタンをクリックします。

    同じ所有者を複数のテーブルに割り当てるには、テーブルを選択し、[所有者の設定] ボタンをクリックします。

  6. テーブル構成をレビューします。 それらを変更するには、[前へ] ボタンをクリックします。

  7. [Create Query for Upgrade](アップグレードのクエリの作成) をクリックします。

    生成された SQL ステートメントを含むクエリ エディターが表示されます。

  8. クエリを実行します。

    クエリが完了すると、各テーブルのメタデータが Hive メタストアから Unity カタログにコピーされます。 これらのテーブルは、アップグレード ウィザードでアップグレード済みとしてマークされます。

  9. 新しい各テーブルの [アクセス許可] タブを使用して、きめ細かなアクセス制御を定義します。

  10. (省略可能) 新しい Unity Catalog テーブルにユーザーを示すアップグレードされた各 Hive テーブルへのコメントを追加します。

    hive.metastore カタログの元のテーブルに戻り、テーブル コメントを追加します。

    テーブル コメントで次の構文を使用した場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Hive テーブルが移行されたことを示すコメントを追加する」を参照してください。

  11. 新しいテーブルを使用するようにワークロードを変更します。

    省略可能な前の手順に一覧表示されているような元の Hive テーブルにコメントを追加した場合、[クイック修正] リンクと Databricks アシスタントを使用して、ワークロードの検索と修正に役立てることができます。

アップグレード ウィザードを使用して単一の Hive テーブルを Unity Catalog の外部テーブルにアップグレードする

Catalog Explorer のアップグレード ウィザードを使用して、既定の Hive メタストアから Unity カタログ メタストアに 1 つのテーブルをコピーできます。

アップグレード ウィザードを使用するタイミングの決定については、「Hive から Unity Catalog への移行オプション」を参照してください。

要件

データ形式の要件:

コンピューティングの要件:

  • Unity Catalog をサポートするコンピューティング リソース。 開始する前にを参照してください。

Unity Catalog オブジェクトとアクセス許可の要件:

  • Unity Catalog のテーブルの場所パスへのアクセスを認証する、Azure マネージド ID またはサービス プリンシパルのストレージ資格情報
  • 先ほど作成したストレージ資格情報とクラウド テナント上のデータへのパスを参照する外部の場所
  • CREATE EXTERNAL TABLEアップグレードするテーブルの外部の場所に対するアクセス許可。

アップグレード プロセス

外部テーブルをアップグレードするには:

  1. Catalog Explorer を開くには、サイド バーで カタログ アイコンカタログ をクリックします。

  2. アップグレードするデータベース、テーブルの順に選択します。

  3. テーブルの詳細ビューの右上隅にある [アップグレード] をクリックします。

  4. アップグレードするテーブルを選択し、[次へ] をクリックします。

  5. 宛先カタログ、スキーマ (データベース)、所有者を選択します。

    ユーザーは、新しく作成されたテーブルに、そのカタログとスキーマに対する特権のコンテキストでアクセスできます。

    テーブルの所有者には、SELECTMODIFY を含め、テーブルに対するすべての特権があります。 所有者を選択しない場合は、ユーザーを所有者としてマネージド テーブルが作成されます。 Databricks では通常、テーブルの所有権をグループに付与することをお勧めします。 Unity Catalog でのオブジェクトの所有権の詳細については、「Unity Catalog オブジェクトの所有権を管理する」を参照してください。

  6. テーブルの詳細ビューの右上隅にある [アップグレード] をクリックします。

  7. アップグレードするテーブルを選択し、[次へ] をクリックします。

    ここで、テーブル メタデータが Unity Catalog にコピーされ、新しいテーブルが作成されます。 これで、[アクセス許可] タブを使用して、きめ細かいアクセス制御を定義できるようになりました。

  8. これで、[アクセス許可] タブを使用して、きめ細かいアクセス制御を定義します。

  9. (省略可能) 新しい Unity Catalog テーブルにユーザーを示す Hive テーブルへのコメントを追加します。

    hive.metastore カタログの元のテーブルに戻り、テーブル コメントを追加します。

    テーブル コメントで次の構文を使用した場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Hive テーブルが移行されたことを示すコメントを追加する」を参照してください。

  10. 新しいテーブルを使用するように既存のワークロードを変更します。

    省略可能な前の手順に一覧表示されているような元の Hive テーブルにコメントを追加した場合、[クイック修正] リンクと Databricks アシスタントを使用して、ワークロードの検索と修正に役立てることができます。

    Note

    以前のテーブルが不要になった場合は、Hive メタストアから削除できます。 外部テーブルを削除しても、クラウド テナントのデータ ファイルは変更されません。

SYNC を使用して Hive テーブルを Unity Catalog の外部テーブルにアップグレードする

Hive メタストアの外部テーブルを Unity Catalog の外部テーブルにコピーするために SYNC SQL コマンドを使用できます。 個々のテーブルを同期することも、スキーマ全体を同期することもできます。

また、Databricks ワークスペース ストレージ (DBFS ルートと呼ばれることもあります) の外部に格納されている Hive マネージド テーブルを Unity Catalog の外部テーブルにコピーするために SYNC を使用することもできます。 ワークスペース ストレージに格納されている Hive マネージド テーブルのコピーには使用できません。 これらのテーブルをコピーするには、代わりに CREATE TABLE CLONE を使用します。

SYNC コマンドは、アップグレードする各ソース テーブルへの書き込み操作を実行し、ターゲット Unity Catalog 外部テーブルのレコードなど、ブックキーピング用に新しいテーブル プロパティを追加します。

SYNC は、Hive メタストアのソース テーブルが変更されたときに、既存の Unity Catalog テーブルを更新するためにも使用できます。 このため、Unity Catalog に徐々に移行するのに適したツールです。

詳細については、「SYNC」を参照してください。 アップグレード ウィザードを使用するタイミングの決定については、「Hive から Unity Catalog への移行オプション」を参照してください。

要件

データ形式の要件:

コンピューティングの要件:

  • Unity Catalog をサポートするコンピューティング リソース。 開始する前にを参照してください。

Unity Catalog オブジェクトとアクセス許可の要件:

  • Unity Catalog のテーブルの場所パスへのアクセスを認証する、Azure マネージド ID またはサービス プリンシパルのストレージ資格情報
  • 先ほど作成したストレージ資格情報とクラウド テナント上のデータへのパスを参照する外部の場所
  • CREATE EXTERNAL TABLEアップグレードするテーブルの外部の場所に対するアクセス許可。

Hive テーブルのアクセス要件:

  • 共有アクセス モードを使用するコンピューティングの場合は、レガシ テーブル アクセス制御を使用して付与された Hive メタストア内のテーブルへのアクセスが必要です。 開始する前にを参照してください。

アップグレード プロセス

Hive メタストアのテーブルを SYNC を使用する Unity Catalog 外部テーブルにアップグレードするには、次の操作を行います。

  1. ノートブックまたは SQL クエリ エディターで、次のいずれかを実行します。

    外部 Hive テーブルを同期する:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    外部 Hive スキーマとそのすべてのテーブルを同期する:

    SYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    

    Databricks ワークスペース ストレージ外に格納されているマネージド Hive テーブルを同期する:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    Databricks ワークスペース ストレージの外部に格納されているマネージド Hive テーブルを含むスキーマを同期する:

    SYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    
  2. アカウントレベルのユーザーまたはグループに新しいテーブルへのアクセスを許可します。 「Unity Catalog の特権の管理」を参照してください。

  3. (省略可能) 元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを示すコメントを追加します。

    hive.metastore カタログの元のテーブルに戻り、テーブル コメントを追加します。 カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、「カタログ エクスプローラーを使ってデータ オブジェクトにマークダウン コメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、「COMMENT ON」を参照してください。

    テーブル コメントで次の構文を使用した場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Hive テーブルが移行されたことを示すコメントを追加する」を参照してください。

  4. テーブルを移行した後、新しいテーブルを使用するには、ユーザーが既存のクエリとワークロードを更新する必要があります。

    省略可能な前の手順に一覧表示されているような元の Hive テーブルにコメントを追加した場合、[クイック修正] リンクと Databricks アシスタントを使用して、ワークロードの検索と修正に役立てることができます。

  5. 使用していないテーブルを削除する前に、そのテーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。

    不要になったテーブルを参照している既存のコードを検出し、更新するのに役立つ非推奨コメントに引き続き依存している場合は、不要になったテーブルを削除しないでください。 同様に、元の同期以降にテーブルが変更された場合は、不要になったテーブルを削除しないでください: SYNC を使用すると、ソース Hive テーブルからの変更で既存の Unity Catalog テーブルを更新できます。

CLONE を使用して、Hive マネージド テーブルを Unity Catalog マネージド テーブルにアップグレードする

CREATE TABLE CLONE を使用すると、Hive メタストアのマネージド テーブルを Unity Catalog のマネージド テーブルにアップグレードできます。 個々のテーブルを複製できます。 ディープ複製では、既存のテーブルのメタデータに加えて、ソース テーブルのデータを複製先にコピーします。 Hive ソース テーブルを削除する場合は、ディープ複製を使用します。 シャロー複製では、データ ファイルは複製ターゲットにコピーされませんが、ソース データへの参照によってデータ ファイルにアクセスできます。テーブル メタデータはソースと同等です。 シャロー複製は作成コストが安価ですが、複製ターゲットのデータにクエリを実行するユーザーもソース データにアクセスできる必要があります。

CLONE を使用するタイミングの決定については、「Hive から Unity Catalog への移行オプション」を参照してください。 どの種類の複製を使用するかについては、「Azure Databricks でテーブルを複製する」を参照してください。

要件

データ形式の要件:

コンピューティングの要件:

  • Unity Catalog をサポートするコンピューティング リソース。 開始する前にを参照してください。

アクセス許可の要件:

  • テーブルを追加するカタログとスキーマの USE CATALOG および USE SCHEMA 特権、およびスキーマの CREATE TABLE 特権、またはカタログまたはスキーマの所有者である必要があります。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
  • 共有アクセス モードを使用するコンピューティングの場合は、レガシ テーブル アクセス制御を使用して付与された Hive メタストア内のテーブルへのアクセスが必要です。 開始する前にを参照してください。

アップグレード プロセス

Hive メタストアのマネージド テーブルを Unity Catalog のマネージド テーブルにアップグレードするには、次の操作を行います。

  1. ノートブックまたは SQL クエリ エディターで、次のいずれかを実行します。

    Hive メタストアのマネージド テーブルをディープ複製する:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    DEEP CLONE hive_metastore.<source-schema>.<source-table>;
    

    Hive メタストアのマネージド テーブルをシャロー複製する:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    SHALLOW CLONE hive_metastore.<source-schema>.<source-table>;
    

    テーブル プロパティなどの追加パラメーターについては、「CREATE TABLE CLONE」を参照してください。

  2. アカウントレベルのユーザーまたはグループに新しいテーブルへのアクセスを許可します。 「Unity Catalog の特権の管理」を参照してください。

  3. (省略可能) 元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを示すコメントを追加します。

    hive.metastore カタログの元のテーブルに戻り、テーブル コメントを追加します。 カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、「カタログ エクスプローラーを使ってデータ オブジェクトにマークダウン コメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、「COMMENT ON」を参照してください。

    テーブル コメントで次の構文を使用した場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Hive テーブルが移行されたことを示すコメントを追加する」を参照してください。

  4. テーブルを移行した後、新しいテーブルを使用するには、ユーザーが既存のクエリとワークロードを更新する必要があります。

    省略可能な前の手順に一覧表示されているような元の Hive テーブルにコメントを追加した場合、[クイック修正] リンクと Databricks アシスタントを使用して、ワークロードの検索と修正に役立てることができます。

  5. 使用していないテーブルを削除する前に、そのテーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。

    不要になったテーブルを参照している既存のコードを検出し、更新するのに役立つ非推奨コメントに引き続き依存している場合は、不要になったテーブルを削除しないでください。 同様に、シャロー複製を実行した場合は、不要になったテーブルを削除しないでください。 シャロー複製は、ソース Hive テーブルからデータを参照します。

CREATE TABLE AS SELECT を使用して、Hive テーブルを Unity Catalog マネージド テーブルにアップグレードする

CREATE TABLE CLONE を使用して、Hive メタストアのテーブルを Unity Catalog のマネージド テーブルに移行できない場合、または使用しない場合は、CREATE TABLE AS SELECT を使用して Hive テーブルにクエリを実行することで、Unity Catalog に新しいマネージド テーブルを作成できます。 CREATE TABLE CLONECREATE TABLE AS SELECT の違いについては、「Hive から Unity Catalog への移行オプション」を参照してください。

要件

コンピューティングの要件:

  • Unity Catalog をサポートするコンピューティング リソース。 開始する前にを参照してください。

アクセス許可の要件:

  • テーブルを追加するカタログとスキーマの USE CATALOG および USE SCHEMA 特権、およびスキーマの CREATE TABLE 特権、またはカタログまたはスキーマの所有者である必要があります。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
  • 共有アクセス モードを使用するコンピューティングの場合は、レガシ テーブル アクセス制御を使用して付与された Hive メタストア内のテーブルへのアクセスが必要です。 開始する前にを参照してください。

アップグレード プロセス

CREATE TABLE AS SELECT を使用して、Hive メタストアのテーブルを Unity Catalog のマネージド テーブルにアップグレードするには、次の操作を行います。

  1. 既存のテーブルに対してクエリを実行して、新しい Unity カタログテーブルを作成します。 プレースホルダー値を次のように置き換えます。

    • <uc-catalog>: 新しいテーブルの Unity カタログのカタログ。
    • <uc-schema>: 新しいテーブルの Unity カタログ スキーマ。
    • <new-table>: Unity カタログ テーブルの名前。
    • <source-schema>: Hive テーブル (default など) のスキーマ。
    • <source-table>: Hive テーブルの名前。

    SQL

    CREATE TABLE <uc-catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<source-schema>.<source-table>;
    

    Python

    df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      name = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<source-schema>.<source-table>")
    
    saveAsTable(
      df = df,
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    一部の列または行のみを移行する場合は、SELECT ステートメントを変更します。

    Note

    ここで紹介するコマンドでは、マネージド テーブルを作成し、その中のデータを専用のマネージド ストレージの場所にコピーします。 クラウド ストレージ内のデータを移動せずに、代わりに Unity Catalog にテーブルが登録されている外部テーブルを作成する場合は、「アップグレード ウィザードを使用して単一の Hive テーブルを Unity Catalog の外部テーブルにアップグレードする」を参照してください。 また、「Unity Catalog のマネージド ストレージの場所を指定する」も参照してください。

  2. アカウントレベルのユーザーまたはグループに新しいテーブルへのアクセスを許可します。 「Unity Catalog の特権の管理」を参照してください。

  3. (省略可能) 元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを示すコメントを追加します。

    hive.metastore カタログの元のテーブルに戻り、テーブル コメントを追加します。 カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、「カタログ エクスプローラーを使ってデータ オブジェクトにマークダウン コメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、「COMMENT ON」を参照してください。

    テーブル コメントで次の構文を使用した場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Hive テーブルが移行されたことを示すコメントを追加する」を参照してください。

  4. テーブルを移行した後、新しいテーブルを使用するには、ユーザーが既存のクエリとワークロードを更新する必要があります。

    省略可能な前の手順に一覧表示されているような元の Hive テーブルにコメントを追加した場合、[クイック修正] リンクと Databricks アシスタントを使用して、ワークロードの検索と修正に役立てることができます。

  5. 使用していないテーブルを削除する前に、そのテーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。

    不要になったテーブルを参照している既存のコードを検出し、更新するのに役立つ非推奨コメントに引き続き依存している場合は、不要になったテーブルを削除しないでください。

ビューを Unity カタログにアップグレードする

ビューのすべての参照元テーブルを同じ Unity カタログ メタストアにアップグレードした後、新しいテーブルを参照する新しいビューを作成できます。

Hive テーブルが移行されたことを示すコメントを追加する

非推奨の Hive テーブルに新しい Unity Catalog テーブルをユーザーに示すコメントを追加する場合は、非推奨の Hive テーブルを参照するノートブックおよび SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、お使いのコードで新しいテーブルを参照するために更新できる Databricks Assistant への [クイック修正] リンクが提供されます。

Hive テーブルの非推奨に関する警告

コメントでは、次の形式を使用する必要があります。

This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.

カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、「カタログ エクスプローラーを使ってデータ オブジェクトにマークダウン コメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、「COMMENT ON」を参照してください。

Databricks アシスタントを使用して、非推奨のテーブル参照を更新する

SQL クエリ エディターのノートブック セルまたはステートメントで、テーブル名に取り消し線が表示されている場合は、テーブル名にカーソルを合わせると警告が表示されます。 その警告でテーブルが非推奨であることが通知され、新しいテーブル名が表示されたら、[クイック修正][非推奨の修正] の順にクリックします。 Databricks アシスタントが開き、非推奨のテーブル名を新しい Unity Catalog テーブル名に置き換えることを提案します。 指示に従ってタスクを完了します。

Databricks アシスタントを使用した Hive テーブル更新を示すビデオ

Databricks アシスタントの使用」も参照してください。