外部テーブルの操作

外部テーブルは、クラウド テナント内のクラウド オブジェクト ストレージのディレクトリにデータを保存します。 外部表を定義するときに、保管場所を指定する必要があります。

Databricksでは、 Databricksで コンピュート を使用せずにデータに直接アクセスする必要がある場合にのみ、外部テーブルを使用することをお勧めします。 ユーザーが外部システムからデータ ファイルにアクセスする場合、Unity Catalog 権限は適用されません。

注:

この記事では、Unity Catalog の外部テーブルに焦点を当てます。 従来のHive metastore内の外部テーブルの動作は異なります。 従来のHive metastore内のデータベース オブジェクトを参照してください。

外部テーブルの操作

Databricks は外部テーブルのメタデータのみを管理し、包含スキーマに関連付けられた管理ストレージの場所は使用しません。 Unity Catalog でのテーブル登録は、データ ファイルへのポインターにすぎません。 外部テーブルを削除しても、データ ファイルは削除されません。

外部テーブルを作成するときは、既存のデータ ファイルのディレクトリをテーブルとして登録するか、新しいデータ ファイルを作成するためのパスを指定できます。

外部テーブルでは、次のファイル形式を使用できます。

  • DELTA

  • CSV

  • JSON

  • AVRO

  • PARQUET

  • ORC

  • TEXT

外部テーブルの作成

外部テーブルを作成するには、SQL コマンドまたはデータフレーム書き込み操作を使用できます。

始める前に

外部テーブルを作成するには、次の権限要件を満たす必要があります。

  • 外部テーブルがアクセスする LOCATION へのアクセスを許可する外部ロケーションに対する CREATE EXTERNAL TABLE 特権。

  • テーブルの親スキーマに対するUSE SCHEMA権限。

  • テーブルの親カタログに対するUSE CATALOG権限。

  • テーブルの親スキーマに対するCREATE TABLE権限。

外部ロケーションの設定の詳細については、「クラウド ストレージを Databricksに接続するための外部ロケーションを作成する」を参照してください。

注:

外部テーブルへのアクセスを許可する場合は、次の点に注意してください。Databricks Databricks 、外部ロケーションが単一のメタストアで定義されている場合にのみ、 S3の外部ロケーションによってバックアップされるテーブルに対する書き込み権限を付与することをお勧めします。 複数のメタストアから単一の外部S3ロケーションにあるデータを安全に読み取ることはできますが、複数のメタストアから同じS3ロケーションに並行して書き込むと、一貫性の問題が発生する可能性があります。

SQLコマンドの例

ノートブックまたはSQLクエリエディタで次のいずれかのコマンド例を使用して、外部テーブルを作成します。

次の例で、プレースホルダーの値を置き換えます。

  • <catalog>:テーブルを格納するカタログの名前。

  • <schema>:テーブルを格納するスキーマの名前。

  • <table-name>:テーブルの名前。

  • <column-specification>:各列の名前とデータ型。

  • <bucket-path>: テーブルが作成されるクラウド ストレージ バケットへのパス。

  • <table-directory>:テーブルが作成されるディレクトリ。テーブルごとに一意のディレクトリを使用します。

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

テーブル作成の詳細については、 CREATE TABLEを参照してください。

データフレームの書き込み操作

多くのユーザーは、クエリ結果または DataFrame 書き込み操作から外部テーブルを作成します。 次の記事では、Databricks で外部テーブルを作成するために使用できる多くのパターンの一部を示します。

外部表のドロップ

テーブルを削除するには、その所有者である必要があります。 外部テーブルを削除するには、次の SQL コマンドを実行します。

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog では、外部テーブルを削除しても、クラウド ストレージ内の基になるデータは削除されません。 テーブルに関連付けられているデータを削除する必要がある場合は、基になるデータ ファイルを直接削除する必要があります。

ノートブックの例: 外部テーブルを作成する

次のサンプルノートブックを使用して、カタログ、スキーマ、外部テーブルを作成し、それらに対する権限を管理できます。

Unity Catalog ノートブックでの外部テーブルの作成と管理

ノートブックを新しいタブで開く