インスタンスプロファイルで 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:クラウドストレージ内のデータへのアクセスを確認する
クラウド・オブジェクト・ストレージ内の正しいデータにアクセスできることを確認するには、以下の操作を行います。
サイドバーで、「 クエリを作成」>をクリックします。
SQL エディターのメニュー バーで、SQLウェアハウスを選択します。
SQL エディターで、次のコードを貼り付けます。
select * from csv.<path>
<path>
を管理者から受け取った S3 URI に置き換えます。たとえば、s3://<bucket>/<folder>/
.実行をクリックします。
ステップ 2: テーブルを作成する
このステップでは、 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: クラウドストレージからテーブルにデータをロードする
このステップでは、 S3 バケットから Databricks ワークスペースで作成したテーブルにデータをロードする方法について説明します。
サイドバーで、「 クエリを作成」>をクリックします。
SQL エディターのメニュー バーで、SQLウェアハウスを選択し、SQLウェアハウスが実行されていることを確認します。
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 に指示します。実行をクリックします。
注:
もう一度 [実行 ] をクリックすると、新しいデータはテーブルに読み込まれません。 これは、
COPY INTO
コマンドが新しいデータと見なされるもののみを処理するためです。
クリーンアップ
ワークスペース内の関連付けられているリソースを保持する必要がなくなった場合は、クリーンアップできます。
関連リソース
COPY INTOの リファレンス記事