外部テーブルの操作
外部テーブルは、クラウド テナントのクラウド オブジェクト ストレージ内のディレクトリにデータを格納します。 外部テーブルを定義するときは、保存場所を指定する必要があります。
Databricks では、Azure Databricks でコンピューティングを使用せずにデータに直接アクセスする必要がある場合にのみ、外部テーブルを使用することをお勧めします。 ユーザーが外部システムからデータ ファイルにアクセスする場合、Unity カタログ権限は適用されません。
Note
この記事では、Unity カタログの外部テーブルを中心に説明します。 レガシHive メタストアの外部テーブルはビヘイビアーが異なります。 「レガシ Hive メタストア内のデータベース オブジェクト」を参照してください。
外部テーブルの操作
Azure Databricks では、外部テーブルのメタデータのみが管理され、含まれているスキーマに関連付けられている管理保存場所は使用されません。 Unity カタログでのテーブルの登録は、データ ファイルへのポインターにすぎません。 外部テーブルを削除しても、データ ファイルは削除されない
外部テーブルを作成するときは、データ ファイルの既存のディレクトリをテーブルとして登録するか、新しいデータ ファイルを作成するためのパスを指定できます。
外部テーブルでは次のファイル形式を使用できます。
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORC
- [TEXT]
外部テーブルを作成する
外部テーブルを作成するには、SQL コマンドまたはデータフレーム書き込み操作を使用できます。
開始する前に
外部テーブルを作成するには、次のアクセス許可要件を満たす必要があります:
- 外部テーブルによってアクセスされる、
LOCATION
へのアクセスを許可する外部の場所に対するCREATE EXTERNAL TABLE
権限。 - テーブルの親スキーマに対する
USE SCHEMA
権限。 - テーブルの親カタログに対する
USE CATALOG
権限。 - テーブルの親スキーマに対する
CREATE TABLE
権限。
構成する外部の場所の詳細については、「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」を参照してください。
SQL コマンドの例
ノートブックまたは SQL クエリ エディターで次のいずれかのコマンド例を使用して、外部テーブルを作成します。
次の例では、プレースホルダー値を置き換えます。
<catalog>
: テーブルを含むカタログの名前。<schema>
: テーブルを含めるスキーマの名前。<table-name>
: テーブルの名前。<column-specification>
: 各列の名前とデータ型。<bucket-path>
: テーブルが作成されるクラウド ストレージ バケットへのパス。<table-directory>
: テーブルが作成されるディレクトリ。 テーブルごとに一意のディレクトリを使用します。
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
テーブルの作成パラメーターの詳細については、「テーブルの作成」をご覧ください。
DataFrame 書き込み操作
多くのユーザーは、クエリ結果または DataFrame 書き込み操作から外部テーブルを作成します。 次の記事では、Azure Databricks で外部テーブルを作成するために使用可能な多数のパターンの一部を示します:
外部テーブルを削除
テーブルをドロップするには、その所有者である必要があります。 外部テーブルを削除するには、次の SQL コマンドを実行します:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
外部テーブルを削除しても、Unity Catalog では基になるデータは削除されません。 テーブルに関連付けられているデータを削除する必要がある場合は、基になるデータ ファイルを直接削除する必要があります。
ノートブックの例: 外部テーブルを作成する
次のノートブックの例を使用すると、カタログ、スキーマ、およびテーブルを作成し、それらのアクセス許可を管理できます。