外部テーブルの操作
外部テーブルは、クラウド テナント内のクラウド オブジェクト ストレージのディレクトリにデータを保存します。 外部表を定義するときに、保管場所を指定する必要があります。
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を参照してください。