Hive テーブルとビューを Unity Catalog にアップグレードする
この記事では、既存のワークスペースローカルHive metastoreに登録されているテーブルとビューをUnity Catalogにアップグレードする方法について説明します。
注
この記事で説明するテーブル移行プロセスの代わりに、Hive metastore フェデレーションを使用して、 をミラーリングするカタログをUnity Catalog Hive metastoreに作成できます。Hive metastoreフェデレーション:Unity Catalog に登録されたテーブルを管理するための の有効化 を参照してください。Hive metastore
Hive テーブルを、Unity Catalog 内のマネージドテーブルまたは外部テーブルにアップグレードできます。
マネージド テーブルは、Unity Catalog でテーブルを作成するための推奨される方法です。 Unity Catalogでは、ライフサイクル、ファイルレイアウト、およびストレージを管理できます。 Unity Catalog はパフォーマンスも自動的に最適化します。 マネージドテーブルでは常にDeltaテーブル形式が使用されます。
マネージドテーブルは、 用に予約した マネージドストレージロケーション Unity Catalogにあります。このストレージ要件のため、既存の CREATE TABLEHiveUnity Catalogテーブルを AS マネージドテーブルにコピーする場合は、 CLONE または AS SELECT (CTAS) を使用する必要があります。
外部テーブルは、データのライフサイクル、ファイル レイアウト、および保存場所が Unity Catalog によって管理されないテーブルです。 外部テーブルでは、複数のデータ形式がサポートされています。
通常、外部テーブルは、 Databricks以外のもの (つまり、 DatabricksクラスターまたはDatabricks SQLウェアハウスを使用しない) を使用してデータに直接アクセスする必要がある場合にのみ使用します。 外部テーブルは、データをコピーすることなく既存のデータをUnity Catalogにすばやく登録できるため、移行シナリオでも便利です。 これは、外部テーブル内のデータが予約済みマネージド ストレージに存在する必要がないという事実のおかげです。
Unity Catalogの管理テーブルと外部テーブルの詳細については、「テーブルとビューとは」を参照してください。
HiveからUnity Catalogへの移行オプション
Hive テーブルを Unity Catalog に移行する準備ができたら、ユースケースに応じていくつかのオプションがあります。
移行ツール |
説明 |
Hive テーブルの要件 |
Unity Catalogテーブルが作成されました |
なぜそれを使用する必要があるのですか? |
---|---|---|---|---|
ワークスペースの Unity Catalog 移行の準備状況を評価し、ID、権限、保存場所、テーブルを Unity Catalog に移行するワークフローを実行する包括的なコマンドライン ユーティリティとその他のツールのセット。 UCX は、GitHub のdatabrickslabs/ucxで入手できます。 |
マネージドまたは外部の Hive テーブル |
マネージドまたは外部 |
Hive テーブルを Unity Catalog にアップグレードする以上の包括的なワークスペース アップグレード計画ツールが必要です。 Hive metastoreに大量のデータがあるワークスペースをアップグレードします。 スクリプトの実行に慣れている。 Hive テーブルを Unity Catalog マネージドテーブルに一括アップグレードする場合、これが唯一のオプションです。 UCX は、すべての Databricks Labs プロジェクトと同様に、パブリック GitHub リポジトリであり、Databricks によって直接サポートされていません。 |
|
カタログ エクスプローラー機能を使用すると、スキーマ全体 (データベース) と複数のマネージドテーブルおよび外部テーブルをHive metastoreからUnity Catalogメタストアに外部テーブルとして一括コピーできます。 アップグレード ウィザードは、選択したテーブルに対して |
マネージドまたは外部の Hive テーブル |
外部のみ |
Hive テーブルを Unity Catalog の外部テーブルにすばやくアップグレードし、ビジュアル インターフェースを使用したい場合。 ソース Hive テーブルが変更されたときに定期的な同期をスケジュールする機能により、Unity Catalog への移行中に「ハイブリッド」 Hive と Unity Catalog ワークスペースを管理するのに便利なツールになります。 |
|
|
マネージドまたは外部の Hive テーブル |
外部のみ |
Hive テーブルを Unity Catalog の外部テーブルにすばやくアップグレードし、ビジュアル インターフェースではなく SQL コマンドを使用したい場合。 ソース Hive テーブルが変更されたときに既存の Unity Catalog テーブルを更新するために定期的な
|
|
ディープクローンは、ソーステーブルのデータとメタデータをクローンターゲットにコピーします。 |
Delta 形式のマネージド Hive テーブル。 |
マネージドのみ |
Unity Catalog データガバナンスを最大限に活用するために、Hive マネージドテーブルを Unity Catalog マネージドテーブルに移行する必要がありますが、Hive テーブルは「Hive テーブル要件」セルに記載されている基準を満たしています。 Hive テーブルが「Hive テーブルの要件」を満たしていない場合は、 CREATE TABLE AS SELECT SQL コマンドを使用して、Hive テーブルを Unity Catalog マネージドテーブルにアップグレードできます。 ただし、ほとんどの場合、 |
この記事では、UCX によるアップグレード プロセス以外のすべてのプロセスを実行する方法について説明します。 Databricks では、ほとんどのワークスペース アップグレード シナリオに UCX を推奨しています。 ただし、より単純なユースケースの場合は、ここで説明するツールを 1 つ以上使用することをお勧めします。
始める前に
このセクションでは、権限とコンピュートの要件とともに、準備しておく必要がある移行の影響の一部について説明します。
影響を理解する
新しい Unity Catalog テーブルを使用するようにワークロードを変更する場合は、いくつかの動作を変更する必要がある可能性があることに注意してください。
Unity Catalog は Hive とは異なる方法でパーティションを管理します。 パーティションを直接操作する Hive コマンドは、 Unity Catalogによって管理されるテーブルではサポートされていません。
CREATE TABLE CLONE
を実行してもテーブル履歴は移行されません。 Hive metastoreにクローンしたUnity Catalog 内のテーブルはすべて、新しいテーブルとして扱われます。Delta Lake のタイムトラベルや、移行前の履歴に依存するその他の操作は実行できません。
詳細については、 Unity Catalogと従来のHive metastoreの使用」を参照してください。
要件
移行を実行するには、次のものが必要です。
Unity Catalog メタストアと少なくとも 1 つの Unity Catalog カタログを持つワークスペース。 「Unity Catalog のセットアップと管理」を参照してください。
テーブルを移行する Unity Catalog カタログに対する権限。 これらの特権要件は、この記事で説明する各手順の冒頭に列挙されています。
Unity Catalog外部テーブルへの移行の場合: Unity Catalogで定義されたストレージ資格情報と外部ロケーション、および外部ロケーションに対する
CREATE EXTERNAL TABLE
権限。以下の両方の要件を満たすDatabricksコンピュート へのアクセス:
Unity Catalog (SQLウェアハウスまたはコンピュート リソース (シングル ユーザー モードまたは共有アクセス モードを使用) ) をサポートします。
Hive metastore内のテーブルへのアクセスを許可します。
共有アクセス モードを使用するコンピュート リソースは、デフォルトで従来の テーブルアクセスコントロールに対して有効になっているため、そのアクセス モードを使用する場合は、移行元のHive metastoreに対する テーブルアクセスコントロール 権限を持っている必要があります。 次の SQL コマンドを使用して自分自身にアクセス権を付与できます。
GRANT ALL PRIVILEGES ON catalog hive_metastore TO `<user>`
または、コンピュート リソースをシングル ユーザー アクセス モードで使用することもできます。
Hive metastore内のオブジェクトに対する権限の管理の詳細については、 Hive metastore権限とセキュリティ保護可能なオブジェクト (レガシー)」を参照してください。 Unity Catalogメタストア内のオブジェクトに対する権限の管理の詳細については、 Unity Catalogでの権限の管理」を参照してください。
Hive metastoreによって管理されるテーブルを識別する
テーブルが現在Unity Catalogに登録されているかどうかを確認するには、カタログ名を確認します。 カタログ hive_metastore
内のテーブルは、ワークスペースローカルHive metastoreに登録されています。 リストされているその他のカタログは、Unity Catalog によって管理されます。
カタログエクスプローラーを使用して hive_metastore
カタログ内のテーブルを表示するには、以下の手順を実行します。
サイドバーの 「カタログ 」をクリックします 。
カタログ ウィンドウで、
hive_metastore
カタログを参照し、スキーマ ノードを展開します。
[カタログ] ウィンドウのフィルター フィールドを使用して、特定のテーブルを検索することもできます。
アップグレード ウィザードを使用して、 Hive metastoreからスキーマまたは複数のテーブルをUnity Catalog外部テーブルにアップグレードします。
Catalog Explorer アップグレード ウィザードを使用して、完全なスキーマ (データベース) と複数の外部テーブルまたはマネージドテーブルをDatabricks Hive metastoreからUnity Catalog メタストアにコピーできます。アップグレードされたテーブルは、Unity Catalog 内の外部テーブルになります。
アップグレード ウィザードを使用するタイミングを決定するには、 HiveからUnity Catalogへの移行オプション」を参照してください。
要件
データ形式の要件:
「外部テーブルの操作」を参照してください。
コンピュート要件:
Unity Catalogをサポートするコンピュートリソース。 「 はじめに」を参照してください。
Unity Catalogオブジェクトと権限の要件:
ロールの ストレージ認証情報 IAMUnity Catalogで、 がテーブルの場所パスにアクセスすることを承認します。
作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション 。
CREATE EXTERNAL TABLE
アップグレードするテーブルの外部ロケーションに対する権限。
Hive テーブル アクセス要件:
コンピュートが共有アクセス モードを使用する場合は、従来のテーブルアクセスコントロールを使用して付与されたHive metastore内のテーブルへのアクセスが必要です。 「 はじめに」を参照してください。
アップグレード プロセス
サイドバーの「 カタログ 」(Catalog) をクリックして、「 カタログエクスプローラ」(Catalog Explorer ) を開きます。
カタログとして [
hive_metastore
] を選択し、アップグレードするスキーマ (データベース) を選択します。スキーマ詳細ビューの右上にある [ アップグレード ] をクリックします。
アップグレードするすべてのテーブルを選択し、[ 次へ] をクリックします。
アップグレード ウィザードを使用してアップグレードできるのは、Unity Catalog でサポートされている形式の外部テーブルのみです。 「外部テーブルの操作」を参照してください。
各テーブルの宛先カタログ、スキーマ (データベース)、および所有者を設定します。
ユーザーは、 カタログおよびスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。
テーブルの所有者は、
SELECT
やMODIFY
を含む、テーブルに対するすべての権限を持ちます。 所有者を選択しない場合、マネージド テーブルは自分が所有者として作成されます。 Databricks では、通常、テーブルに所有権をグループに付与することをお勧めします。 Unity Catalogでのオブジェクト所有権の詳細については、「 Unity Catalog オブジェクトの所有権を管理する」を参照してください。同じカタログとスキーマを複数のテーブルに割り当てるには、テーブルを選択し、[ 変換先の設定 ] ボタンをクリックします。
複数のテーブルに同じ所有者を割り当てるには、テーブルを選択して [ 所有者の設定 ] ボタンをクリックします。
テーブル構成を確認します。 変更するには、[ 前へ ] ボタンをクリックします。
[ アップグレード用のクエリーの作成] をクリックします。
クエリー・エディターが表示され、生成された SQL ステートメントが表示されます。
クエリーを実行します。
クエリーが完了すると、各テーブルのメタデータが Hive metastore から Unity Catalogにコピーされます。 これらのテーブルは、アップグレード ウィザードでアップグレード済みとしてマークされます。
新しい各テーブルの [アクセス許可 ] タブを使用して、きめ細かなアクセス制御を定義します。
(オプション) アップグレードされた各 Hive テーブルに、ユーザーを新しい Unity Catalog テーブルに誘導するコメントを追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。テーブル コメントで次の構文を使用すると、非推奨の Hive テーブルを参照するノートブックと SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、Databricks Assistant へのクイック修正リンクが提供され、新しいテーブルを参照するようにコードを更新できます。
This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
Hive テーブルが移行されたことを示すコメントを追加するを参照してください。
新しいテーブルを使用するようにワークロードを変更します。
オプションの前の手順でリストされているような元のHiveテーブルにコメントを追加した場合は、クイック修正リンクとDatabricksアシスタントを使用してワークロードを検索および変更できます。
アップグレード ウィザードを使用して、単一の Hive テーブルを Unity Catalog 外部テーブルにアップグレードします。
Catalog Explorer のアップグレードウィザードを使用して、デフォルトの から メタストアに単一のテーブルをコピーできます。Hive metastoreUnity Catalog
アップグレード ウィザードを使用するタイミングを決定するには、 HiveからUnity Catalogへの移行オプション」を参照してください。
要件
データ形式の要件:
「外部テーブルの操作」を参照してください。
コンピュート要件:
Unity Catalogをサポートするコンピュートリソース。 「 はじめに」を参照してください。
Unity Catalogオブジェクトと権限の要件:
がテーブルの場所パスにアクセスすることを承認する ロールの ストレージ認証情報 。IAMUnity Catalog
作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション 。
CREATE EXTERNAL TABLE
アップグレードするテーブルの外部ロケーションに対する権限。
アップグレード プロセス
外部テーブルをアップグレードするには:
サイドバーの 「カタログ 」(Catalog) をクリックして、「 カタログエクスプローラ」(Catalog Explorer ) を開きます。
アップグレードするデータベースを選択し、次にテーブルを選択します。
テーブル詳細ビューの右上隅にある [アップグレード ] をクリックします。
アップグレードするテーブルを選択し、「 次へ」をクリックします。
宛先カタログ、スキーマ (データベース)、および所有者を選択します。
ユーザーは、 カタログおよびスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。
テーブルの所有者は、
SELECT
やMODIFY
を含む、テーブルに対するすべての権限を持ちます。 所有者を選択しない場合、マネージド テーブルは自分が所有者として作成されます。 Databricks では、通常、テーブルに所有権をグループに付与することをお勧めします。 Unity Catalogでのオブジェクト所有権の詳細については、「 Unity Catalog オブジェクトの所有権を管理する」を参照してください。テーブル詳細ビューの右上隅にある [アップグレード ] をクリックします。
アップグレードするテーブルを選択し、「 次へ」をクリックします。
テーブル メタデータが Unity Catalogにコピーされ、新しいテーブルが作成されます。 [ アクセス許可] タブを使用して、きめ細かなアクセス制御を定義できるようになりました。
きめ細かいアクセス制御を定義するには、 「権限」タブを使用します。
(オプション) ユーザーを新しい 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 テーブルが移行されたことを示すコメントを追加するを参照してください。
新しいテーブルを使用するように既存のワークロードを変更します。
オプションの前の手順でリストされているような元のHiveテーブルにコメントを追加した場合は、クイック修正リンクとDatabricksアシスタントを使用してワークロードを検索および変更できます。
注
古いテーブルが不要になった場合は、 Hive metastoreから削除できます。 外部テーブルを削除しても、クラウド テナント上のデータ ファイルは変更されません。
SYNC を使用して Hive テーブルを Unity Catalog 外部テーブルにアップグレードする
SYNC
SQLコマンドを使用して、 Hive metastore内の外部テーブルをUnity Catalog内の外部テーブルにコピーできます。 個々のテーブルまたはスキーマ全体を同期できます。
を使用して、 ワークスペース ストレージ (DBFS ルートと呼ばれることもあります) SYNC
Hiveの外部に保存されている マネージドテーブルをDatabricksUnity Catalog 内の外部テーブルにコピーすることもできます。ワークスペース ストレージに保存されている Hive マネージドテーブルをコピーするために使用することはできません。 これらのテーブルをコピーするには、代わりにCREATE TABLE CLONEを使用します。
SYNC
コマンドは、アップグレードする各ソース テーブルに対して書き込み操作を実行し、対象の Unity Catalog 外部テーブルのレコードを含む、簿記用の追加のテーブル プロパティを追加します。
SYNC
Unity Catalog内のソース テーブルが変更されたときに、既存のHive metastore テーブルを更新するためにも使用できます。これにより、Unity Catalog に段階的に移行するための優れたツールになります。
詳細については、 SYNCを参照してください。 アップグレード ウィザードを使用するタイミングを決定するには、 HiveからUnity Catalogへの移行オプション」を参照してください。
要件
データ形式の要件:
「外部テーブルの操作」を参照してください。
コンピュート要件:
Unity Catalogをサポートするコンピュートリソース。 「 はじめに」を参照してください。
Unity Catalogオブジェクトと権限の要件:
ロールの ストレージ認証情報 IAMUnity Catalogで、 がテーブルの場所パスにアクセスすることを承認します。
作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション 。
CREATE EXTERNAL TABLE
アップグレードするテーブルの外部ロケーションに対する権限。
Hive テーブル アクセス要件:
コンピュートが共有アクセス モードを使用する場合は、従来のテーブルアクセスコントロールを使用して付与されたHive metastore内のテーブルへのアクセスが必要です。 「 はじめに」を参照してください。
アップグレード プロセス
SYNC
を使用してHive metastore内のテーブルをUnity Catalog外部テーブルにアップグレードするには:
ノートブックまたは 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>;
アカウントレベルのユーザーまたはグループに、新しいテーブルへのアクセス権を付与します。 Unity Catalogでの権限の管理を参照してください。
(オプション) ユーザーを新しい Unity Catalog テーブルに誘導するコメントを元の Hive テーブルに追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、 「データと AI アセットにコメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、 「COMMENT ON」を参照してください。テーブル コメントで次の構文を使用すると、非推奨の Hive テーブルを参照するノートブックと SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、Databricks Assistant へのクイック修正リンクが提供され、新しいテーブルを参照するようにコードを更新できます。
This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
Hive テーブルが移行されたことを示すコメントを追加するを参照してください。
テーブルが移行された後、ユーザーは新しいテーブルを使用するように既存のクエリーとワークロードを更新する必要があります。
オプションの前の手順でリストされているような元のHiveテーブルにコメントを追加した場合は、クイック修正リンクとDatabricksアシスタントを使用してワークロードを検索および変更できます。
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連する Query とワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために、非推奨のコメントにまだ依存している場合は、古いテーブルを削除しないでください。 同様に、元の同期以降にテーブルが変更された場合は、古いテーブルを削除しないでください。
SYNC
を使用すると、ソース Hive テーブルの変更内容で既存の Unity Catalog テーブルを更新できます。
CLONE を使用して Hive マネージドテーブルを Unity Catalog マネージドテーブルにアップグレードする
CREATE TABLE CLONE
Deltaを使用して、Hive metastore 内のマネージド テーブルを のマネージドテーブルにアップグレードします。Unity Catalog個々のテーブルをクローニングできます。 レガシー Hive metastore から Unity Catalogにテーブルをクローンする場合は、ディープクローンを使用する必要があります。
CLONE
をいつ使用するかを決定する方法については、「Hive から Unity Catalog への移行オプション」を参照してください。CLONE
の詳細については、「Databricksでのテーブルのクローニング」を参照してください。
要件
データ形式の要件:
Delta 形式のマネージド Hive テーブル。
コンピュート要件:
Unity Catalogをサポートするコンピュートリソース。 「 はじめに」を参照してください。
権限要件:
表を追加するカタログおよびスキーマに対する
USE CATALOG
およびUSE SCHEMA
特権、およびスキーマに対するCREATE TABLE
、またはカタログまたはスキーマの所有者である必要があります。 Unity Catalog権限とセキュリティ保護可能なオブジェクトを参照してください。コンピュートが共有アクセス モードを使用する場合は、従来のテーブルアクセスコントロールを使用して付与されたHive metastore内のテーブルへのアクセスが必要です。 「 はじめに」を参照してください。
アップグレード プロセス
Hive metastore内のマネージドテーブルをUnity Catalog内のマネージドテーブルにアップグレードするには:
ノートブックまたは SQL クエリ エディターで、次のいずれかを実行します。
Hive metastore内のマネージドテーブルをディープクローンします。
CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table> DEEP CLONE hive_metastore.<source-schema>.<source-table>;
テーブルのプロパティを含む追加の構造の詳細については、 CREATE TABLE CLONEを参照してください。
アカウントレベルのユーザーまたはグループに、新しいテーブルへのアクセス権を付与します。 Unity Catalogでの権限の管理を参照してください。
(オプション) ユーザーを新しい Unity Catalog テーブルに誘導するコメントを元の Hive テーブルに追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、 「データと AI アセットにコメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、 「COMMENT ON」を参照してください。テーブル コメントで次の構文を使用すると、非推奨の Hive テーブルを参照するノートブックと SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、Databricks Assistant へのクイック修正リンクが提供され、新しいテーブルを参照するようにコードを更新できます。
This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
Hive テーブルが移行されたことを示すコメントを追加するを参照してください。
テーブルが移行された後、ユーザーは新しいテーブルを使用するように既存のクエリーとワークロードを更新する必要があります。
オプションの前の手順でリストされているような元のHiveテーブルにコメントを追加した場合は、クイック修正リンクとDatabricksアシスタントを使用してワークロードを検索および変更できます。
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連する Query とワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために、非推奨のコメントにまだ依存している場合は、古いテーブルを削除しないでください。 同様に、浅いクローンを実行した場合は、古いテーブルを削除しないでください。 シャロー クローンでは、ソース Hive テーブルからデータを参照します。
CREATE TABLE AS SELECT を使用して Hive テーブルを Unity Catalog マネージドテーブルにアップグレードする
CREATE TABLE CLONE
内のテーブルをHive metastore 内のマネージドテーブルに移行するために を使用できない、または使用したくない場合は、Unity Catalog Unity Catalogを使用してHive テーブルをクエリすることにより、CREATE TABLE AS SELECT
内に新しいマネージドテーブルを作成できます。CREATE TABLE CLONE
と CREATE TABLE AS SELECT
の違いについては、 HiveからUnity Catalogへの移行オプション」を参照してください。
要件
コンピュート要件:
Unity Catalogをサポートするコンピュートリソース。 「 はじめに」を参照してください。
権限要件:
表を追加するカタログおよびスキーマに対する
USE CATALOG
およびUSE SCHEMA
特権、およびスキーマに対するCREATE TABLE
、またはカタログまたはスキーマの所有者である必要があります。 Unity Catalog権限とセキュリティ保護可能なオブジェクトを参照してください。コンピュートが共有アクセス モードを使用する場合は、従来のテーブルアクセスコントロールを使用して付与されたHive metastore内のテーブルへのアクセスが必要です。 「 はじめに」を参照してください。
アップグレード プロセス
CREATE TABLE AS SELECT
を使用してHive metastore内のテーブルをUnity Catalog内のマネージドテーブルにアップグレードするには:
既存のテーブルに対してクエリを実行して、新しい Unity Catalog テーブルを作成します。 プレースホルダー値を置き換えます。
<uc-catalog>
: 新しいテーブルの Unity Catalog カタログ。<uc-schema>
: 新しいテーブルの Unity Catalog スキーマ。<new-table>
: Unity Catalog テーブルの名前。<source-schema>
: Hive テーブルのスキーマ (default
など)。<source-table>
: Hive テーブルの名前。
CREATE TABLE <uc-catalog>.<new-schema>.<new-table> AS SELECT * FROM hive_metastore.<source-schema>.<source-table>;
df = spark.table("hive_metastore.<source-schema>.<source-table>") df.write.saveAsTable( name = "<uc-catalog>.<uc-schema>.<new-table>" )
%r library(SparkR) df = tableToDF("hive_metastore.<source-schema>.<source-table>") saveAsTable( df = df, tableName = "<uc-catalog>.<uc-schema>.<new-table>" )
val df = spark.table("hive_metastore.<source-schema>.<source-table>") df.write.saveAsTable( tableName = "<uc-catalog>.<uc-schema>.<new-table>" )
一部の列または行のみを移行する場合は、
SELECT
ステートメントを変更します。注
ここで説明するコマンドは、データが専用の 管理ストレージの場所に コピーされる マネージドテーブル を作成します。代わりに、クラウド ストレージ内のデータを移動せずにテーブルが Unity Catalog に登録されている 外部テーブルを作成する場合は、「 アップグレード ウィザードを使用して 1 つの Hive テーブルを Unity Catalog 外部テーブルにアップグレードする」を参照してください。 「Unity Catalog でマネージドストレージロケーションを指定する」も参照してください。
アカウントレベルのユーザーまたはグループに、新しいテーブルへのアクセス権を付与します。 Unity Catalogでの権限の管理を参照してください。
(オプション) ユーザーを新しい Unity Catalog テーブルに誘導するコメントを元の Hive テーブルに追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、 「データと AI アセットにコメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、 「COMMENT ON」を参照してください。テーブル コメントで次の構文を使用すると、非推奨の Hive テーブルを参照するノートブックと SQL クエリ エディター クエリでは、非推奨のテーブル名が取り消し線付きテキストで表示され、コメントが警告として表示され、Databricks Assistant へのクイック修正リンクが提供され、新しいテーブルを参照するようにコードを更新できます。
This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
Hive テーブルが移行されたことを示すコメントを追加するを参照してください。
テーブルが移行された後、ユーザーは新しいテーブルを使用するように既存のクエリーとワークロードを更新する必要があります。
オプションの前の手順でリストされているような元のHiveテーブルにコメントを追加した場合は、クイック修正リンクとDatabricksアシスタントを使用してワークロードを検索および変更できます。
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連する Query とワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために、非推奨のコメントにまだ依存している場合は、古いテーブルを削除しないでください。
ビューを Unity Catalog にアップグレードする
ビューの参照テーブルをすべて同じ Unity Catalog メタストアにアップグレードした後、新しいテーブルを参照する新しいビューを作成できます。
Hiveテーブルが移行されたことを示すコメントを追加する
非推奨の Hive テーブルに、ユーザーを新しい Unity Catalog テーブルに誘導するコメントを追加すると、非推奨の Hive テーブルを参照するノートブックと SQL クエリ エディター クエリに、取り消し線付きのテキストを使用して非推奨のテーブル名が表示され、コメントが警告として表示され、Databricks Assistant へのクイック修正リンクが提供され、コードを更新して新しいテーブルを参照できるようになります。
コメントは、次の形式にする必要があります。
This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
カタログ エクスプローラーを使用してテーブル コメントを追加する方法については、 「データと AI アセットにコメントを追加する」を参照してください。 ノートブックまたは SQL クエリ エディターで SQL ステートメントを使用してテーブル コメントを追加する方法については、 「COMMENT ON」を参照してください。
Databricks Assistant を使用して非推奨のテーブル参照を更新する
ノートブックのセルまたは SQL クエリ エディターのステートメントのテーブル名に取り消し線テキストが表示される場合は、テーブル名の上にマウス ポインターを置くと警告通知が表示されます。 その警告通知にテーブルが非推奨として記載され、新しいテーブル名が表示されている場合は、[ クイック修正]、[ 非推奨の修正]の順にクリックします。 Databricks Assistantが開き、非推奨のテーブル名を新しい Unity Catalogテーブル名に置き換えることが提案されます。 指示に従ってタスクを完了します。
「Databricks Assistant の使用」も参照してください。