COPY INTO を使用して、 Unity Catalog ボリュームまたは外部ロケーションでデータをロードする
COPY INTO
を使用して、COPY INTO でサポートされている任意のソースとファイル形式から Unity Catalog のマネージド テーブルまたは外部テーブルにデータを取り込む方法について説明します。Unity Catalog には、生データへの安全なアクセスを構成するための新しいオプションが追加されています。 Unity Catalogボリュームまたは外部ロケーションを使用して、クラウドオブジェクトストレージ内のデータにアクセスできます。
Databricks では、 COPY INTO
を使用したインジェスト プロセスの一環として、ボリュームを使用してクラウド ストレージ内のファイルにアクセスすることをお勧めします。 ボリュームと外部ロケーションの使用に関する推奨事項の詳細については、「 Unity Catalog のベスト プラクティス」を参照してください。
この記事では、 COPY INTO
コマンドを使用して、Google Cloud Storage (GCS) バケットから Databricks SQL のテーブルにデータを読み込む方法について説明します。
この記事のステップでは、管理者が Unity Catalog ボリュームまたは外部ロケーションを構成して、 GCSでソース ファイルにアクセスできることを前提としています。
始める前に
COPY INTO
を使用して、Unity Catalog ボリュームまたは Unity Catalog 外部ロケーションとして定義されているクラウドオブジェクトストレージ パスからデータを読み込む前に、次のものが必要です。
ボリュームに対する
READ VOLUME
権限、または外部ロケーションに対するREAD FILES
権限。ボリュームの作成の詳細については、「Unity Catalog ボリュームとは」を参照してください。
外部ロケーションの作成の詳細については、「クラウド ストレージを Databricksに接続するための外部ロケーションを作成する」を参照してください。
ソースデータへのパス (クラウドオブジェクトストレージの URL またはボリュームパスの形式)。
クラウドオブジェクトストレージのURLの例:
gs://landing-bucket/raw-data/json
。ボリュームパスの例:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json
.ターゲットテーブルを格納するスキーマに対する
USE SCHEMA
特権。親カタログに対する
USE CATALOG
権限。
Unity Catalog特権の詳細については、「Unity Catalog特権とセキュリティ保護可能なオブジェクト」を参照してください。
ボリュームからのデータのロード
Unity Catalog ボリュームからデータを読み込むには、 READ VOLUME
権限が必要です。 ボリューム権限は、指定したボリュームの下にあるネストされたすべてのディレクトリに適用されます。
たとえば、パス /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/
のボリュームにアクセスできる場合、次のコマンドは有効です。
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;
オプションで、dbfs スキームでボリューム・パスを使用することもできます。 たとえば、次のコマンドも有効です。
COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;
外部ロケーションを使用したデータのロード
次の例では、外部ロケーションを使用して GCS からテーブルにデータをロード Unity Catalog ソース コードへのアクセスを提供します。
COPY INTO my_json_data
FROM 'gs://landing-bucket/json-data'
FILEFORMAT = JSON;
外部ロケーション特権の継承
外部ロケーション権限は、指定したロケーションの下にあるネストされたすべてのディレクトリに適用されます。
たとえば、URL gs://landing-bucket/raw-data
で定義された外部ロケーションにアクセスできる場合は、次のコマンドが有効です。
COPY INTO landing_table
FROM 'gs://landing-bucket/raw-data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'gs://landing-bucket/raw-data/json'
FILEFORMAT = JSON;
この外部ロケーションに対するアクセス許可は、指定された場所より上または並列のディレクトリに対する特権を付与しません。 たとえば、 次のコマンドはどちらも有効ではありません。
COPY INTO parent_table
FROM 'gs://landing-bucket'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 'gs://landing-bucket/json-data'
FILEFORMAT = JSON;