インスタンスプロファイルで COPY INTO を使用してデータをロードする

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

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

Databricks では、Databricks SQL での増分データ読み込みと一括データ読み込みに COPY INTO コマンドを使用することをお勧めします。

注:

COPY INTO 何千ものファイルを含むデータソースに適しています。 Databricks では、何百万ものファイルを読み込むために Auto Loader を使用することをお勧めしますが、これは Windows ではサポートされていませんDatabricks SQL。

始める前に

Databricks にデータを読み込む前に、次のものがあることを確認してください。

  • S3 のデータへのアクセス。 管理者はまず、Databricks SQLウェアハウスがソース ファイルを読み取ることができるように、「 インジェスト用のデータ アクセスを構成する 」の手順を完了する必要があります。

  • 管理者が作成したインスタンスプロファイルを使用する Databricks SQL ウェアハウス。

  • SQLウェアハウスに対する [管理可能 ] アクセス許可。

  • 完全修飾 S3 URI。

  • Databricks SQL ユーザー インターフェイスに精通している。

ステップ1:クラウドストレージ内のデータへのアクセスを確認する

クラウド・オブジェクト・ストレージ内の正しいデータにアクセスできることを確認するには、以下の操作を行います。

  1. サイドバーで、「 クエリを作成」>をクリックします。

  2. SQL エディターのメニュー バーで、SQLウェアハウスを選択します。

  3. SQL エディターで、次のコードを貼り付けます。

    select * from csv.<path>
    

    <path> を管理者から受け取った S3 URI に置き換えます。たとえば、 s3://<bucket>/<folder>/.

  4. 実行をクリックします。

ステップ 2: テーブルを作成する

このステップでは、 Databricks ワークスペースにテーブルを作成して受信データを保持する方法について説明します。

  1. 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
    );
    
  2. 実行をクリックします。

ステップ 3: クラウドストレージからテーブルにデータをロードする

このステップでは、 S3 バケットから Databricks ワークスペースで作成したテーブルにデータをロードする方法について説明します。

  1. サイドバーで、「 クエリを作成」>をクリックします。

  2. SQL エディターのメニュー バーで、SQLウェアハウスを選択し、SQLウェアハウスが実行されていることを確認します。

  3. SQL エディターで、次のコードを貼り付けます。 このコードでは、以下を置き換えます。

    • <s3-bucket> を S3 バケットの名前に置き換えます。

    • <folder> を S3 バケット内のフォルダの名前に置き換えます。

    COPY INTO <catalog-name>.<schema-name>.<table-name>
    FROM 's3://<s3-bucket>/<folder>/'
    FILEFORMAT = CSV
    FORMAT_OPTIONS (
      'header' = 'true',
      'inferSchema' = 'true'
    )
    COPY_OPTIONS (
       'mergeSchema' = 'true'
    );
    
    SELECT * FROM <catalog_name>.<schema_name>.<table_name>;
    

    注:

    FORMAT_OPTIONS FILEFORMATによって異なります。この場合、 header オプションは CSV ファイルの最初の行をヘッダーとして扱うように Databricks に指示し、 inferSchema オプションは CSV ファイルの各フィールドのデータ型を自動的に決定するように Databricks に指示します。

  4. 実行をクリックします。

    注:

    もう一度 [実行 ] をクリックすると、新しいデータはテーブルに読み込まれません。 これは、 COPY INTO コマンドが新しいデータと見なされるもののみを処理するためです。

クリーンアップ

ワークスペース内の関連付けられているリソースを保持する必要がなくなった場合は、クリーンアップできます。

テーブルを削除する

  1. サイドバーで、「 クエリを作成」>をクリックします。

  2. SQLウェアハウスを選択し、SQLウェアハウスが実行されていることを確認します。

  3. 次のコードを貼り付けます。

    DROP TABLE <catalog-name>.<schema-name>.<table-name>;
    
  4. 実行をクリックします。

  5. このクエリのタブにカーソルを合わせ、[ X ] アイコンをクリックします。

SQL エディターでクエリーを削除する

  1. サイドバーで、「 SQL エディター」をクリックします。

  2. SQL エディターのメニュー バーで、このチュートリアル用に作成した各クエリのタブにカーソルを合わせ、[ X ] アイコンをクリックします。

関連リソース