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にあります。このストレージ要件のため、既存の テーブルを as マネージドテーブルにコピーする場合は、CLONE またはCREATE TABLE AS SELECT (CTAS) を使用する必要があります。HiveUnity Catalog
-
外部テーブル は、データのライフサイクル、ファイル レイアウト、およびストレージの場所が Unity Catalog によって管理されていないテーブルです。 外部テーブルでは、複数のデータ形式がサポートされています。
通常、外部テーブルを使用するのは、Databricks コンピュート以外の (つまり、 Databricks クラスターや Databricks SQL ウェアハウスを使用しない) データに直接アクセスする必要がある場合のみです。 外部テーブルは、データをコピーすることなく、既存のデータを Unity Catalog にすばやく登録できるため、移行シナリオでも便利です。 これは、外部テーブルのデータが予約済みの管理ストレージに存在する必要がないためです。
Unity Catalogの managed テーブルと外部テーブルの詳細については、「テーブルとは」を参照してください。
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 コマンドを使用して、自分自身にアクセス権を付与できます。
SQLGRANT 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内のテーブルにアクセスする必要があります。 始める前にを参照してください。
アップグレードプロセス
-
サイドバー
カタログ をクリックして、カタログエクスプローラーを開きます。
-
カタログとして
hive_metastore
を選択し、アップグレードするスキーマ (データベース) を選択します。 -
スキーマ詳細ビューの右上にある [ アップグレード ] をクリックします。
-
アップグレードするすべてのテーブルを選択し、[ 次へ ] をクリックします。
アップグレード ウィザードを使用してアップグレードできるのは、Unity Catalog でサポートされている形式の外部テーブルのみです。 外部テーブルの操作を参照してください。
-
各テーブルのコピー先カタログ、スキーマ (データベース)、および所有者を設定します。
ユーザーは、カタログとスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。
テーブルの所有者には、
SELECT
やMODIFY
など、テーブルに対するすべての権限があります。 所有者を選択しない場合、マネージドテーブルはあなたが所有者として作成されます。 Databricks では、通常、グループにテーブルの所有権を付与することをお勧めします。 Unity Catalog でのオブジェクトの所有権の詳細については、「 Unity Catalog オブジェクトの所有権の管理」を参照してください。同じカタログとスキーマを複数のテーブルに割り当てるには、テーブルを選択して [ Set destination ] ボタンをクリックします。
同じ所有者を複数のテーブルに割り当てるには、テーブルを選択して [ 所有者を設定 ] ボタンをクリックします。
-
テーブルの設定を確認します。 これらを変更するには、[ 前へ ] ボタンをクリックします。
-
「アップグレード用のクエリを作成」 をクリックします。
クエリ・エディタに、生成された SQL 文が表示されます。
-
クエリを実行します。
クエリが完了すると、各テーブルのメタデータが Hive metastore から Unity Catalogにコピーされます。 これらのテーブルは、アップグレードウィザードでアップグレード済みとマークされています。
-
新しい各テーブルの [Permissions ] タブを使用して、きめ細かなアクセス制御を定義します。
-
(オプション)アップグレードされた各 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 Assistant を使用して、ワークロードの検索と変更に役立てることができます。
アップグレード ウィザードを使用して、1 つの Hive テーブルを Unity Catalog 外部テーブルにアップグレードする
カタログ エクスプローラー のアップグレード ウィザードを使用して、デフォルトHive metastore からUnity Catalog メタストアに 1 つのテーブルをコピーできます
アップグレード ウィザードをいつ使用するかを決定する方法については、「 Hive から Unity Catalog への移行オプション」を参照してください。
必要条件
データ形式の要件 :
- 外部テーブルの操作を参照してください。
コンピュートの要件 :
- Unity Catalogをサポートするコンピュート リソース始める前にを参照してください。
Unity Catalog オブジェクトとアクセス許可の要件 :
- ロールの ストレージ認証情報 IAMUnity Catalogで、 がテーブルの場所パスにアクセスすることを承認します。
- 作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション 。
CREATE EXTERNAL TABLE
アップグレードするテーブルの外部ロケーションに対する権限。
アップグレードプロセス
外部テーブルをアップグレードするには:
-
サイドバー
「カタログ 」をクリックして、「カタログエクスプローラー」を開きます。
-
アップグレードするデータベースを選択し、次にテーブルを選択します。
-
テーブル詳細ビューの右上隅にある [アップグレード ] をクリックします。
-
アップグレードするテーブルを選択して、「 次へ 」をクリックしてください。
-
宛先カタログ、スキーマ (データベース)、および所有者を選択します。
ユーザーは、カタログとスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。
テーブルの所有者には、
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 Assistant を使用して、ワークロードの検索と変更に役立てることができます。
古いテーブルが不要になった場合は、 Hive metastoreから削除できます。 外部テーブルを削除しても、クラウド テナント上のデータ ファイルは変更されません。
SYNC を使用して Hive テーブルを Unity Catalog 外部テーブルにアップグレードする
SYNC
SQL コマンドを使用して、 Hive metastore 内の外部テーブルを Unity Catalog内の外部テーブルにコピーできます。 個々のテーブルまたはスキーマ全体を同期できます。
SYNC
Hiveまた、 を使用してDatabricks ワークスペース ストレージ (DBFS ルートとも呼ばれます) の外部に保存されているマネージドテーブル の外部テーブルにコピーすることもできます。Unity 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 テーブルを同期します。
SQLSYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
SET OWNER <principal>;外部 Hive スキーマとそのすべてのテーブルを同期します。
SQLSYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
SET OWNER <principal>;Databricks ワークスペース ストレージの外部に保存されているマネージドHive テーブルを同期します。
SQLSYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
SET OWNER <principal>;Databricks ワークスペース ストレージの外部に格納されているマネージド Hive テーブルを含むスキーマを同期します。
SQLSYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
SET OWNER <principal>; -
アカウントレベルのユーザーまたはグループに新しいテーブルへのアクセス権を付与します。 「Unity Catalog での特権の管理」を参照してください。
-
(オプション)元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを誘導するコメントを追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。Catalog Explorer を使用してテーブル コメントを追加する方法については、「 データ資産と 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 Assistant を使用して、ワークロードの検索と変更に役立てることができます。
-
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために非推奨コメントにまだ依存している場合は、古いテーブルを削除しないでください。 同様に、元の同期以降にそのテーブルが変更された場合は、古いテーブルを削除しないでください:
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内のマネージドテーブルをディープクローンします。
SQLCREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
DEEP CLONE hive_metastore.<source-schema>.<source-table>;テーブルのプロパティなど、追加のパラメーターに関する情報については、「 CREATE TABLE CLONE」を参照してください。
-
アカウントレベルのユーザーまたはグループに新しいテーブルへのアクセス権を付与します。 「Unity Catalog での特権の管理」を参照してください。
-
(オプション)元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを誘導するコメントを追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。Catalog Explorer を使用してテーブル コメントを追加する方法については、「 データ資産と 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 Assistant を使用して、ワークロードの検索と変更に役立てることができます。
-
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために非推奨コメントにまだ依存している場合は、古いテーブルを削除しないでください。 同様に、シャロークローンを実行した場合は、古いテーブルを削除しないでください。 浅いクローンは、ソース Hive テーブルからデータを参照します。
AS SELECT を使用したHive Unity Catalogテーブルから マネージドテーブルへのアップグレードCREATE TABLE
CREATE TABLE CLONE
Hive metastoreUnity Catalog内のテーブルを のマネージドテーブルに移行するために を使用できない場合、または使用したくない場合は、Unity Catalog を使用して テーブルをクエリすることで、 で新しいマネージドテーブルを作成できます。HiveCREATE 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 テーブルの名前。
-
- SQL
- Python
- R
- Scala
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 での特権の管理」を参照してください。
-
(オプション)元の Hive テーブルに、新しい Unity Catalog テーブルにユーザーを誘導するコメントを追加します。
hive.metastore
カタログの元のテーブルに戻り、テーブル コメントを追加します。Catalog Explorer を使用してテーブル コメントを追加する方法については、「 データ資産と 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 Assistant を使用して、ワークロードの検索と変更に役立てることができます。
-
古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連するクエリとワークロードを再実行して、依存関係をテストします。
古いテーブルを参照する既存のコードを見つけて更新するために非推奨コメントにまだ依存している場合は、古いテーブルを削除しないでください。
ビューを 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.
Catalog Explorer を使用してテーブル コメントを追加する方法については、「 データ資産と AI 資産にコメントを追加する」を参照してください。 ノートブックまたは SQL クエリエディタで SQL ステートメントを使用してテーブルコメントを追加する方法については、「 COMMENT ON」を参照してください。
Databricks Assistant を使用して非推奨のテーブル参照を更新する
ノートブックのセルまたは SQL クエリ エディターのステートメントのテーブル名に取り消し線テキストが表示される場合は、テーブル名の上にマウス ポインターを置くと警告通知が表示されます。 その警告通知にテーブルが非推奨として記載され、新しいテーブル名が表示されている場合は、[ クイック修正] 、[ 非推奨の修正 ]の順にクリックします。 Databricks Assistantが開き、非推奨のテーブル名を新しい Unity Catalogテーブル名に置き換えることが提案されます。 指示に従ってタスクを完了します。
「Databricks Assistant を有効にして試す」も参照してください。