この記事では、COPY INTO
コマンドを使用して、Azure アカウントの Azure Data Lake Storage (ADLS) コンテナーから Databricks SQL のテーブルにデータを読み込む方法について説明します。
この記事の手順では、ADLS のソース ファイルにアクセスできるように、管理者が Azure Databricks サービス プリンシパルを使用するように SQL ウェアハウスを構成していることを前提としています。 管理者がストレージ資格情報を使用してUnity Catalogの外部ロケーションを構成した場合は、代わりに「COPY INTO を使用して Unity Catalog ボリュームまたは外部ロケーション にデータを読み込む」を参照してください。 管理者から一時的な資格情報 (BLOB SAS トークン) を渡された場合は、代わりに「COPY INTO を使用してデータを読み込む」の手順に従ってください。
Databricks では、databricks SQL を使用した増分データ読み込みと一括データ読み込みに COPY INTO コマンドを使用することをお勧めします。
注
COPY INTO
は、何千ものファイルを含むデータ ソースに適しています。 Databricks では、Databricks SQL でサポートされていない数百万のファイルを読み込むために自動ローダーを使用することをお勧めします。
開始する前に
Azure Databricks にデータを読み込む前に、次の情報があることを確認します。
- ADLS 内のデータへのアクセス。 Databricks SQL ウェアハウスがソース ファイルを読み取ることができるように、管理者はまず、「インジェスト用のデータ アクセスを構成する」内の手順を完了する必要があります。
- Databricks SQL ウェアハウス。
- SQL ウェアハウスの管理可能アクセス許可。
- ADLS コンテナー内のデータへのパス。
- Databricks SQLのユーザー インターフェイスに関する理解。
手順 1: クラウド ストレージ内のデータへのアクセスを確認する
クラウド オブジェクト ストレージ内の正しいデータへのアクセスがあることを確認するには、次の操作を行います。
サイドバーで、[作成] > [クエリ] をクリックします。
SQL エディターのメニュー バーで、SQL ウェアハウスを選択します。
SQL エディターに次のコードを貼り付けます。
select * from csv.<path>
<path>
を、管理者から受け取った ADLS コンテナー パスに置き換えます。たとえば、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 コンテナーから Azure Databricks ワークスペースのテーブルにデータを読み込む方法について説明します。
サイドバーで、[作成] > [クエリ] をクリックします。
SQL エディターのメニュー バーで、SQL ウェアハウスを選択し、SQL ウェアハウスが実行されていることを確認します。
SQL エディターに次のコードを貼り付けます。 このコードで、次のように置き換えます。
- ストレージ アカウント内の ADLS コンテナーの名前を使用して
<container>
を指定します。 -
<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 に指示します。- ストレージ アカウント内の ADLS コンテナーの名前を使用して
[実行] をクリックします。
注
[実行] をもう一度クリックしても、テーブルに新しいデータは読み込まれません。 これは、
COPY INTO
コマンドでは新しいデータと見なされるもののみを処理するためです。
クリーンアップ
保持する必要がなくなったら、ワークスペース内の関連付けられているリソースをクリーンアップできます。
テーブルを削除する
サイドバーで、[作成] > [クエリ] をクリックします。
SQL ウェアハウスを選択し、SQL ウェアハウスが実行されていることを確認します。
次のコードを貼り付けます。
DROP TABLE <catalog-name>.<schema-name>.<table-name>;
[実行] をクリックします。
このクエリのタブにカーソルを合わせて、[X] アイコンをクリックします。
SQL エディターでクエリを削除する
- サイドバーで [SQL エディター] をクリックします。
- SQL エディターのメニュー バーで、このチュートリアル用に作成した各クエリのタブにカーソルを合わせ、 X アイコンをクリックします。
追加リソース
- COPY INTO リファレンス記事