メインコンテンツまでスキップ

COPY INTOUnity Catalogボリュームまたは外部ロケーションを持つ を使用したデータの読み込み

COPY INTO を使用して、COPY INTO でサポートされている任意のソースとファイル形式から Unity Catalog のマネージド テーブルまたは外部テーブルにデータを取り込む方法について説明します。Unity Catalog には、生データへの安全なアクセスを構成するための新しいオプションが追加されています。 Unity Catalogボリュームまたは外部ロケーションを使用して、クラウド・オブジェクト・ストレージ内のデータにアクセスできます。

Databricks では、 COPY INTOを使用したインジェスト プロセスの一部として、クラウド ストレージ内のファイルにアクセスするためにボリュームを使用することをお勧めします。 ボリュームと外部ロケーションの使用に関する推奨事項の詳細については、「 Unity Catalog のベスト プラクティス」を参照してください。

この記事では、 COPY INTO コマンドを使用して、AWS アカウントの Amazon S3 (S3) バケットから Databricks SQL のテーブルにデータをロードする方法について説明します。

この記事の手順では、管理者が Unity Catalog ボリュームまたは外部ロケーションを構成して、 S3でソース ファイルにアクセスできることを前提としています。 管理者が インスタンスプロファイルを使用するようにコンピュート リソースを構成した場合は、「AWSCOPY INTOインスタンスプロファイルを使用して データをロード する」または「チュートリアル:COPY INTO を使用してSpark SQL する」を参照してください。管理者から一時的な認証情報 (AWS アクセスキー ID、シークレットキー、セッショントークン) が提供された場合は、代わりに 一時的な認証情報を使用して COPY INTO を使用してデータをロード するを参照してください。

始める前に

COPY INTO を使用して、Unity Catalog ボリュームまたは Unity Catalog 外部ロケーションとして定義されているクラウドオブジェクトストレージ パスからデータを読み込む前に、次のものが必要です。

  • ボリュームに対する READ VOLUME 権限、または外部ロケーションに対する READ FILES 権限。

    ボリュームの作成の詳細については、「Unity Catalog ボリュームとは」を参照してください。

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

  • ソースデータへのパス (クラウドオブジェクトストレージの URL またはボリュームパスの形式)。

    クラウドオブジェクトストレージのURLの例: s3://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/のボリュームにアクセスできる場合、次のコマンドは有効です。

SQL
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 スキームでボリューム・パスを使用することもできます。 たとえば、次のコマンドも有効です。

SQL
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;

外部ロケーションを使用したデータの読み込み

次の例では、外部ロケーションを使用して S3 からテーブルにデータをロード Unity Catalog ソース コードへのアクセスを提供します。

SQL
COPY INTO my_json_data
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

外部ロケーション特権の継承

外部ロケーション権限は、指定したロケーションの下にあるネストされたすべてのディレクトリに適用されます。

たとえば、URL s3://landing-bucket/raw-dataで定義された外部ロケーションにアクセスできる場合は、次のコマンドが有効です。

SQL
COPY INTO landing_table
FROM 's3://landing-bucket/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 's3://landing-bucket/raw-data/json'
FILEFORMAT = JSON;

この外部ロケーションに対するアクセス許可は、指定された場所より上または並列のディレクトリに対する特権を付与しません。 たとえば、 次のコマンドはどちらも有効ではありません

SQL
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

ターゲット・テーブルの 3 レベル・ネームスペース

Unity Catalog テーブルは、3 層の識別子 (<catalog_name>.<database_name>.<table_name>) を使用してターゲットに設定できます。 USE CATALOG <catalog_name> コマンドと USE <database_name> コマンドを使用して、現在のクエリまたはノートブックのデフォルト カタログとデータベースを設定できます。