Unity Catalog を使用したクラウド オブジェクト ストレージへの接続
この記事では、 Unity Catalogを使用してデータを操作するために必要なクラウド ストレージ接続の概要と、クラウド ストレージと外部クラウド サービスへのアクセスを Unity Catalog で管理する方法に関する情報について説明します。
Unity Catalog はクラウドストレージをどのように使用しますか?
Databricks では、Unity Catalog を使用して、クラウド オブジェクト ストレージに保存したすべてのデータへのアクセスを管理することをお勧めします。Unity Catalog には、クラウド オブジェクト ストレージへの安全な接続を構成するための一連のツールが用意されています。これらの接続は、次のアクションを完了するためのアクセスを提供します。
- 生データをレイクハウスに取り込む
- マネージドテーブル と 非構造化データのマネージドボリューム を Unity Catalog で管理されるクラウド ストレージで作成して読み取ります。
- 登録するか、表形式データを含む 外部テーブル と非構造化データを含む 外部ボリューム を、クラウドプロバイダーを使用して管理されるクラウドストレージに作成します。
- 非構造化データ (Unity Catalog ボリューム ) の読み取りと書き込み。
具体的には、Unity Catalog は主に 2 つの方法でクラウド ストレージを使用します。
- Databricksで作成するマネージドテーブルおよびマネージドボリューム (非構造化、非表形式データ) のデフォルト (または「管理」) ストレージの場所 。これらのマネージドストレージロケーションは、メタストア、カタログ、またはスキーマ レベルで定義できます。 クラウドプロバイダーで管理ストレージの場所を作成しますが、そのライフサイクルは Unity Catalogによってフルマネージドされます。
- 外部テーブルとボリュームが格納されるストレージの場所。これらは、Databricks からのアクセスが Unity Catalog によって管理されているが、データのライフサイクルとファイル レイアウトがクラウド プロバイダーやその他のデータ プラットフォームを使用して管理されているテーブルとボリュームです。通常、外部テーブルを使用して、既存のデータを大量に Databricks に登録するか、Databricks の外部ツールを使用してデータへの書き込みアクセスも必要とします。
マネージドテーブルと外部テーブル、およびボリュームの詳細については、「 テーブルとは」を参照してください。 およびUnity Catalog ボリュームとは。
非Unity Catalog ID には、マネージドテーブルまたはボリュームへのストレージレベルのアクセス権を付与 Unity Catalog しないでください。 これにより、データのセキュリティとガバナンスが損なわれます。
マネージドストレージとして使用されるGoogle Cloud Storage またはCloudflare R2バケットへの直接アクセスをユーザーまたはサービスプリンシパルに許可することは避けてください。Unity CatalogUnity Catalog によって管理されるデータにアクセスできる必要がある唯一の ID は、Unity Catalog によって使用される ID です。これを無視すると、環境に次の問題が発生します。
- Unity Catalog で確立されたアクセス制御は、GCS または R2 に直接アクセスできるユーザーによって回避される可能性があります。
- 監査、リネージ、およびその他のUnity Catalogのモニタリング機能は、直接アクセスを捕捉しません。
- データのライフサイクルが崩壊します。つまり、Databricks内のテーブルを変更、削除、または展開すると、ストレージに直接アクセスできるコンシューマーが機能しなくなり、Databricksの外部に書き込むとデータが破損する可能性があります。
Unity Catalog でサポートされているクラウド ストレージ オプション
Unity Catalog は、 Databricks on Google Cloudの次のクラウド ストレージ オプションをサポートしています。
クラウドストレージオプション | 説明 |
---|---|
Google Cloud Storage(GCS)バケット | GCS は、ほとんどの Databricks のユース ケースに適しています。Google Cloud Storage に接続するためのストレージ認証情報を作成するをご覧ください |
AWS S3 バケット | Databricks on Google Cloud は、 S3 バケットへのクロスプラットフォームの読み取り専用アクセスをサポートしています。 「AWS S3 に接続するためのストレージ認証情報を作成する(読み取り専用)」を参照してください。 |
Cloudflare R2バケット | Cloudflare R2は、主にDelta Sharingのユースケースで、データエグレス料金を回避したいと考えているケースを対象としています。「Cloudflare R2 に接続するためのストレージ資格情報を作成する」を参照してください。 |
DBFSルート | DBFSルートは、従来のクラウド ストレージの場所です。Databricks では DBFSルート ストレージにデータを格納しないことをお勧めしますが、従来のプラクティスにより、ワークスペースが格納する場合もあります。「DBFSルート (レガシ) でデータ用の外部ロケーションを作成する」を参照してください。 |
Unity Catalog はクラウドストレージへのアクセスをどのように管理しますか?
テーブルとボリュームを保持する基になるクラウド ストレージへのアクセスを管理するために、 Unity Catalog は、クラウド ストレージの場所へのパスとその場所にアクセスするために必要な資格情報を定義する 外部ロケーション と呼ばれるセキュリティ保護可能なオブジェクトを使用します。 これらの資格情報は、 ストレージ資格情報 と呼ばれる Unity Catalog のセキュリティ保護可能なオブジェクトで定義されます。Unity Catalogで外部ロケーション セキュリティ保護可能なリソースへのアクセスを許可および取り消すと、データ クラウド上のストレージ ロケーションへのアクセスを制御します。Unity Catalogでストレージ資格情報のセキュリティ保護可能なリソースへのアクセスを許可および取り消すことで、外部ロケーション オブジェクトを作成する機能を制御します。
ストレージの資格情報と外部ロケーション
これら 2 つのセキュリティ保護可能なオブジェクトについて、もう少し詳しく説明します。
- ストレージ認証情報 は、クラウドテナントに保存されているデータにアクセスするための認証および承認メカニズムを表し、たとえば、GCSバケットにはサービスアカウントを使用し、Cloudflare R2バケットにはR2 APIトークンを使用します。Unity Catalogで付与される権限は、どのユーザーとグループが資格情報を使用して外部ロケーションを定義できるかを制御します。ストレージ資格情報を作成および使用するアクセス許可は、外部ロケーション オブジェクトを作成する必要があるユーザーにのみ付与する必要があります。 詳細については、「 Unity Catalog でサポートされているクラウド ストレージ オプション」のリンクを参照してください。
- 外部ロケーション は、クラウドストレージパスと、クラウドストレージパスへのアクセスを許可するストレージ認証情報を組み合わせたものです。Unity Catalogで付与される権限は、外部ロケーションで定義されたクラウドストレージパスにアクセスできるユーザーとグループを制御します。外部ロケーションを作成および使用する権限は、外部テーブル、外部ボリューム、または管理ストレージの場所を作成する必要があるユーザーにのみ付与する必要があります。 クラウドストレージをDatabricksに接続するための外部ロケーションの作成を参照してください。
外部ロケーションは、Unity Catalog 外部テーブル や 外部ボリューム などの外部データ資産と、 マネージドテーブル や マネージドボリューム などの管理データ資産の両方に で使用されます。Unity Catalogの外部データ資産と管理データ資産の違いの詳細については、「テーブルとは」を参照してください。 およびUnity Catalog ボリュームとは。
外部ロケーションの使用に関するベストプラクティスについては 、「外部ロケーション、外部テーブル、および外部ボリュームの管理」を参照してください。
外部テーブルとボリュームを作成する際の外部ロケーションの使用
Unity Catalog に登録された外部テーブルと外部ボリュームは、基本的に、Databricks の外部で管理するクラウド ストレージ内のデータへのポインターです。 Unity Catalog で外部テーブルまたは外部ボリュームを作成する場合は、適切な特権が付与されている外部ロケーション オブジェクトに含まれるクラウド ストレージ パスを参照する必要があります。 Unity Catalogの外部データ資産と管理データ資産の違いの詳細については、「テーブルとは」を参照してください。 およびUnity Catalog ボリュームとは。権限については、「 外部ロケーションに対する権限の付与」を参照してください。
管理ストレージの作成時に外部ロケーションを使用する
マネージドテーブル と managed volumes are フルマネージド by Unity Catalog. これらは、メタストア、カタログ、またはスキーマ レベルで定義できる 管理されたストレージの場所に Default によって格納されます。 管理されたストレージの場所をメタストア、カタログ、またはスキーマに割り当てる場合は、外部ロケーション オブジェクトを参照する必要があり、それを使用するための適切な特権が必要です。 「Unity Catalog でのマネージド ストレージの場所の指定」と「Unity Catalog のベスト プラクティス」を参照してください。
クラウドストレージ内のデータへのパスベースのアクセス
Unity Catalog は、クラウド ストレージ URI を使用した外部テーブルと外部ボリュームへのパスベースのアクセスをサポートしていますが、Databricks では、ユーザーがテーブル名を使用してすべての Unity Catalog テーブルを読み書きし、 /Volumes
パスを使用してボリューム内のデータにアクセスすることをお勧めします。 ボリューム は、ほとんどの Databricks ユーザーがクラウド オブジェクト ストレージ内の非表形式データを直接操作するために使用する必要があるセキュリティ保護可能なオブジェクトです。Unity Catalogボリュームとはを参照してください。
Databricks 以外のクライアントを使用して、または Databricks 内からのパスベースのアクセスを使用して外部テーブルのメタデータを更新した場合、そのメタデータは Unity Catalog と状態を自動的に同期しません。Databricks では、このようなメタデータの更新はお勧めしませんが、更新する場合は、Unity Catalog のスキーマを最新の状態にするために MSCK REPAIR TABLE <table-name> SYNC METADATA
を実行する必要があります。REPAIR TABLEを参照してください。
Unity Catalog でクラウドストレージへのアクセスを管理するためのワークフロー
Unity Catalog を使用してクラウドストレージへのアクセスを管理するには、次の操作を行います。
- クラウドストレージパスへのアクセス権を持つ、サービスアカウントなどの長期的なクラウド認証情報を含むストレージ認証情報オブジェクトを作成します。
- ストレージ・パスとストレージ資格証明オブジェクトを参照する外部ロケーション・オブジェクトを作成します。
- 外部テーブル、外部ボリューム、またはデフォルト管理ストレージの場所を作成するときは、外部ロケーションに含まれるパスを参照します。 これは、外部ロケーションまたはサブパスで定義された正確なパスにすることができます。