サービス プリンシパルで COPY INTO を使用してデータを読み込む
このチュートリアルでは、COPY INTO
コマンドを使用して、Azure アカウント内の Azure Data Lake Storage Gen2 (ADLS Gen2) コンテナーから Databricks SQL のテーブルにデータを読み込む方法を説明します。
この記事の手順では、ADLS Gen2 のソース ファイルにアクセスできるように、管理者が Azure Databricks サービス プリンシパルを使用するように SQL ウェアハウスを構成していることを前提としています。 管理者がストレージ資格情報を使用して Unity Catalog の外部の場所を構成した場合は、代わりに「Unity Catalog ボリュームまたは外部の場所で COPY INTO を使用してデータを読み込む」を参照してください。 管理者が一時的な資格情報 (BLOB SAS トークン) を与えた場合は代わりに、「一時的な資格情報で COPY INTO を使用してデータを読み込む」の手順に従ってください。
Databricks では、Databricks SQL を使用して増分データと一括データを読み込むために COPY INTO コマンドを使用することをお勧めします。
注意
COPY INTO
は、何千ものファイルを含むデータ ソースに適しています。 Databricks では、Databricks SQL でサポートされていない数百万のファイルを読み込むために自動ローダーを使用することをお勧めします。
開始する前に
Azure Databricks にデータを読み込む前に、次の情報があることを確認します。
- ADLS Gen2 のデータへのアクセス。 Databricks SQL ウェアハウスがソース ファイルを読み取ることができるように、管理者はまず、「インジェスト用のデータ アクセスを構成する」内の手順を完了する必要があります。
- Databricks SQL ウェアハウス。
- SQL ウェアハウスの管理可能アクセス許可。
- ADLS Gen2 コンテナー内のデータへのパス。
- Databricks SQLのユーザー インターフェイスに関する理解。
手順 1: クラウド ストレージ内のデータへのアクセスを確認する
クラウド オブジェクト ストレージ内の正しいデータへのアクセスがあることを確認するには、次の操作を行います。
サイドバーで、[作成] > [クエリ] をクリックします。
SQL エディターのメニュー バーで、SQL ウェアハウスを選択します。
SQL エディターに次のコードを貼り付けます。
select * from csv.<path>
<path>
を、管理者から受け取った ADLS Gen2 コンテナー パスで置き換えます。たとえば、abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>
です。[実行] をクリックします。
手順 2: テーブルを作成する
この手順では、受信データを保持するために、Azure Databricks ワークスペース内にテーブルを作成する方法について説明します。
SQL エディターに次のコードを貼り付けます。
CREATE TABLE <catalog_name>.<schema_name>.<table_name> ( tpep_pickup_datetime TIMESTAMP, tpep_dropoff_datetime TIMESTAMP, trip_distance DOUBLE, fare_amount DOUBLE, pickup_zip INT, dropoff_zip INT );
[実行] をクリックします。
手順 3: クラウド ストレージからテーブルにデータを読み込む
この手順では、ADLS Gen2 コンテナーから Azure Databricks ワークスペースのテーブルにデータを読み込む方法について説明します。
サイドバーで、[作成] > [クエリ] をクリックします。
SQL エディターのメニュー バーで、SQL ウェアハウスを選択し、SQL ウェアハウスが実行されていることを確認します。
SQL エディターに次のコードを貼り付けます。 このコードで、次のように置き換えます。
<container>
には、ストレージ アカウント内で ADLS Gen2 コンテナーの名前を。<storage-account>
を ADLS Gen2 ストレージ アカウントの名前に置き換えます。<folder>
には、データを含むフォルダーの名前を。<blob-sas-token>
には、管理者から受け取った BLOB SAS トークンの値を。
COPY INTO <catalog-name>.<schema-name>.<table-name> FROM 'abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>' FILEFORMAT = CSV FORMAT_OPTIONS ( 'header' = 'true', 'inferSchema' = 'true' ); SELECT * FROM <catalog-name>.<schema-name>.<table-name>;
注意
FORMAT_OPTIONS
はFILEFORMAT
によって異なります。 この場合、header
オプションは、CSV ファイルの最初の行をヘッダーとして扱うように Azure Databricks に指示し、inferSchema
オプションは、CSV ファイル内の各フィールドのデータ型を自動的に判別するように Azure Databricks に指示します。[実行] をクリックします。
注意
[実行] をもう一度クリックしても、テーブルに新しいデータは読み込まれません。 これは、
COPY INTO
コマンドでは新しいデータと見なされるもののみを処理するためです。
クリーンアップ
保持する必要がなくなったら、ワークスペース内の関連付けられているリソースをクリーンアップできます。
テーブルを削除する
サイドバーで、[作成] > [クエリ] をクリックします。
SQL ウェアハウスを選択し、SQL ウェアハウスが実行されていることを確認します。
次のコードを貼り付けます。
DROP TABLE <catalog-name>.<schema-name>.<table-name>;
[実行] をクリックします。
このクエリのタブにカーソルを合わせて、[X] アイコンをクリックします。
SQL エディターでクエリを削除する
- サイドバーで [SQL エディター] をクリックします。
- SQL エディターのメニュー バーで、このチュートリアル用に作成した各クエリのタブにカーソルを合わせて、[X] アイコンをクリックします。
その他の技術情報
- COPY INTO のリファレンス記事