外部システムを使用した Databricks データへのアクセス
この記事では、Databricks によって管理および管理されるデータを他のシステムで使用できるようにするための機能の概要と推奨事項について説明します。
これらのパターンは、組織が信頼できるツールやシステムを Databricks データに統合する必要があるシナリオに焦点を当てています。 組織外でのデータ共有に関するガイダンスをお探しの場合は、「 データと AI 資産を他の組織のユーザーと安全に共有する」を参照してください。
Databricks はどのような外部アクセスをサポートしていますか?
Databricks では、Unity Catalog を使用してすべてのデータ資産を管理することをお勧めします。
次の表は、Unity Catalog オブジェクトのサポート形式とアクセス パターンの概要を示しています。
Unity Catalog オブジェクト |
サポートされている形式 |
アクセスパターン |
---|---|---|
マネージドテーブル |
Delta Lake、 Iceberg |
クレデンシャルの自動販売、Iceberg RESTカタログ、Delta Sharing |
外部テーブル |
Delta Lake |
資格情報の自動販売、Iceberg RESTカタログ、Delta Sharing、クラウドURI |
外部テーブル |
CSV、 JSON、 Avro、 Parquet、 ORC、 テキスト |
クラウド URI |
外部ボリューム |
すべてのデータタイプ |
クラウド URI |
注:
Iceberg サポートは、Databricks が Delta Lake を使用して書き込んだが、Iceberg 読み取り (UniForm) が有効になっているテーブルを示しています。
これらの Unity Catalog オブジェクトの詳細については、以下を参照してください。
Unity Catalog 資格情報の自動販売
Unity Catalog 資格情報の自動販売機を使用すると、ユーザーは、Databricks によって管理されるデータに対する特権を継承するように外部クライアントを構成できます。 「外部システム アクセスのための Unity Catalog 資格情報の販売」を参照してください。
Iceberg クライアントでテーブルを読み取る
Databricks は、Unity Catalog に登録されたテーブルに対する読み取り専用サポートを Iceberg クライアントに提供します。 サポートされているクライアントには、Apache Spark、Apache Flink、Trino、Snowflake が含まれます。 「 Iceberg クライアントから Databricks テーブルを読み取る」を参照してください。
外部 Delta テーブルの読み取りと書き込み
Delta Lake によってサポートされる Unity Catalog の外部テーブルには、クラウド オブジェクト ストレージの URI と資格情報を使用して、外部の Delta Lake リーダーおよびライター クライアントからアクセスできます。
Unity Catalog外部システムからクラウド オブジェクト ストレージに対して直接実行される読み取りと書き込みを管理しないため、データポリシーがDatabricks外部で尊重されるように、クラウド アカウントで追加のポリシーと資格情報を構成する必要があります。
データ破損やデータ損失の問題を回避するために、Databricks では、S3 に格納されている同じ Delta テーブルを異なるワークスペースまたはクライアントから変更しないことをお勧めします。
複数のクライアントからの書き込みが必要な場合は、クラウドオブジェクトストレージにCloudflare R2を使用できます。 「Cloudflare R2 に接続するためのストレージ資格情報を作成する」を参照してください。
注:
Databricksドキュメントには、Databricks Runtimeバージョンとプラットフォーム機能に基づく制限事項と互換性に関する考慮事項がリストされています。クライアントがサポートするリーダーとライターのプロトコルとテーブル機能を確認する必要があります。 delta.io を参照してください。
外部テーブルを使用した Delta Lake 以外の表形式データへのアクセス
Unity Catalog の外部テーブルは、Parquet、ORC、CSV、JSON など、Delta Lake 以外の多くの形式をサポートしています。 外部テーブルは、テーブルの作成時に指定されたクラウド URI で指定されたクラウド オブジェクト ストレージの場所のディレクトリにすべてのデータ ファイルを格納します。 他のシステムは、クラウドオブジェクトストレージから直接これらのデータファイルにアクセスします。
Unity Catalog外部システムからクラウド オブジェクト ストレージに対して直接実行される読み取りと書き込みを管理しないため、データポリシーがDatabricks外部で尊重されるように、クラウド アカウントで追加のポリシーと資格情報を構成する必要があります。
複数のシステムから外部テーブルの読み取りと書き込みを行うと、Delta Lake 以外の形式に対してトランザクションの保証が提供されないため、一貫性の問題やデータの破損が発生する可能性があります。
Unity Catalog は、Delta Lake 以外の形式でサポートされる外部テーブルに書き込まれた新しいパーティションを取得しない場合があります。 Databricks では、外部システムによって書き込まれたすべてのデータ ファイルが Unity Catalog に登録されていることを確認するために、 MSCK REPAIR TABLE table_name
を定期的に実行することをお勧めします。
外部ボリュームを使用した非表形式データへのアクセス
Databricks では、Databricks に加えて外部システムによって読み取りまたは書き込みされるテーブル形式以外のデータ ファイルを保存するには、外部ボリュームを使用することをお勧めします。 「Unity Catalogボリュームとは」を参照してください。
Unity Catalog外部システムからクラウド オブジェクト ストレージに対して直接実行される読み取りと書き込みを管理しないため、データポリシーがDatabricks外部で尊重されるように、クラウド アカウントで追加のポリシーと資格情報を構成する必要があります。
Volumes には、ボリュームからファイルを取得したり、ボリュームにファイルを配置したりするための APIsU、SDK、およびその他のツールが用意されています。 ボリューム内のファイルの管理を参照してください。
注:
Delta Sharing を使用すると、他の Databricks アカウントとボリュームを共有できますが、外部システムと統合することはできません。