Upgrade tables and views to Unity Catalog | Databricks on AWS [2022/3/16時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
プレビュー
Unity Catalogはパブリックプレビューです。Unity Catalog向けのアカウントコンソールUIはプライベートプレビューです。プレビューに参加するには、Databricks担当者にお問合せください。
Unity Catalogのアクセスコントロールと監査のメカニズムを活用し、複数のワークスペースでデータを共有するために、テーブルとビューをUnity Catalogにアップグレードすることができます。
要件
- Databricksのアカウント管理者である必要があります。
- Databricksアカウントではプレミアムプランである必要があります。
- 必要であれば、メタストアを作成します。
- 必要であれば、メタストアにカタログとスキーマを作成します。カタログとスキーマに新規テーブルとビューが格納されます。
テーブルをUnity Catalogにアップグレードする
-
必要であればメタストアを作成します。メタストアの作成をご覧ください。
-
テーブルを保持しているワークスペースにメタストアを割り当てます。
-
既存のテーブルにクエリーを行うことで新規のUnity Catalogを作成します。プレースホルダーの値を置き換えます。
-
<catalog>
: 新規テーブルに対するUnity Catalogのカタログです。 -
<new_schema>
: 新規テーブルに対するUnity Catalogのスキーマです。 -
<new_table>
: Unity Catalogテーブルの名前です。 -
<old_schema>
:default
のような元のテーブルのスキーマです。 -
<old_table>
: 元のテーブルの名前です。
SQLCREATE TABLE <catalog>.<new_schema>.<new_table> AS SELECT * FROM hive_metastore.<old_schema>.<old_table>;
特定のカラム、行のみを移行する場合には、
SELECT
文を修正します。注意
このコマンドは、メタストアをセットアップした際に指定したストレージ格納場所にデータがコピーされるマネージドテーブルを作成します。データをクラウドストレージに移動することなしにテーブルをUnity Catalogに登録する外部テーブルを作成するには、外部テーブルをUnity Catalogにアップグレードするをご覧ください。 -
-
新規テーブルにアクセスできるアカウントレベルのユーザー、グループにアクセスを許可します。Manage access to data | Databricks on AWSをご覧ください。
-
テーブルを移行した後は、ユーザーは既存のクエリーとワークロードが新しいテーブルを使用するように更新する必要があります。
-
本のテーブルを削除する前にアクセス権を剥奪し、関連するクエリー、ワークロードを再度実行することで依存関係をテストします。
外部テーブルをUnity Catalogにアップグレードする
このサンプルでは、クラウドストレージにある背後のデータをコピーすることなしに、Hiveメタストアの外部テーブルをUnity Catalogにアップグレードする方法を説明します。
-
元のテーブルの
CREATE TABLE
文とLOCATION
を取得します。プレースホルダーの値を置き換えます。-
<old_schema>
: 元のテーブルのスキーマ -
<old_table>
: 元のテーブル名
SQLSHOW CREATE TABLE <old_catalog>.<old_schema>.<old_table>;
この手順の後半で外部格納場所(external location)を作成するために
LOCATION
を使用し、Unity Cataloに新規テーブルを作成するためにCREATE TABLE
文を使用します。 -
-
元のテーブルのデータ格納場所からUnity Catalogが読み取りを行い、新規テーブルのためにその場所に書き込みを継続できるように認証を行うIAMロールを含むストレージクレディンシャルを作成します。
-
作成したストレージクレディンシャルと、クラウドテナント上のデータへのパスを参照する外部格納場所を作成します。
-
元のテーブルの
CREATE
文をノートブックかDatabricks SQLのエディタに貼り付けます。- 元のスキーマ、テーブル名を新たなカタログ、スキーマ、テーブル名に置き換えます。
- 元のテーブルと同じデータフォーマットを
USING
句に追加します。 - 元のテーブルに対するクラウドストレージパスを
LOCATION
句に追加します。
SQLCREATE TABLE <new_catalog>.<new_schema>.<new_table> (<column definitions from old table>) USING <format_from_old_table> LOCATION 's3://<bucket_path>';
コマンドを実行します。テーブルはUnity Catalogに登録されますが、データファイルは移動されません。全く同じデータをUnity Catalogと元のテーブルで利用することができます。
-
新しいテーブルを使用するようにワークロードを変更し、元のテーブルを削除します。
外部テーブルの削除は、クラウドテナント上のデータファイルを変更しないので、ワークロードをアップロードした際に元のテーブルを削除しても安全です。
ビューはUnity Catalogにアップグレードする
ビューに参照される全てのテーブルを同じUnity Catalogメタストアにアップグレードした後は、新たなテーブルを参照する新たなビューを作成することができます。
注意
お使いのビューが他のビューを参照している場合には、先にそれらのビューをアップグレードしてください。
ビューをアップグレードした後は、ビューに対するアクセスをアカウントレベルのユーザー、グループに許可してください。
元のビューを削除する前にアクセス権を剥奪し、関連するクエリー、ワークロードを再度実行することで依存関係をテストします。