データを複数のファイルに分割する - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

データを複数のファイルに分割する

テーブルには 1 つのファイルからデータをロードすることも、複数に分割されたファイルからデータをロードすることができます。COPY コマンドを実行すると、複数のファイルから並列でデータをロードすることができます。セットに共通プレフィックスまたはプレフィックスキーを指定するか、マニフェストファイルにファイルのリストを明示的に指定することで、複数のファイルをロードできます。

注記

データを複数のファイルに分割し、並列処理の長所を最大限に活用することをお勧めします。

ファイルの数がクラスターのスライスの数の倍数になるようにデータをファイルに分割します。そうすることで、Amazon Redshift はスライス間でデータを均等に分割できます。ノードあたりのスライスの数は、クラスターのノードサイズによって決まります。たとえば、各 DS2.XL コンピューティングノードには 2 つのスライスがあり、各 DS2.8XL コンピューティングノードには 32 個のスライスがあります。各ノードサイズが持つスライス数の詳細については、 クラスタとノードについてAmazon Redshift Cluster Management Guide.

ノードはいずれも並列クエリ実行に関与し、スライス間でできるだけ均等に分散されたデータを処理します。クラスターに DS2.XL ノードが 2 つある場合、データを 4 つのファイルまたは 4 の倍数のファイルに分割します。Amazon Redshift はワークロードを分割するときにファイルサイズを考慮しません。そのため、ファイルを概ね同じサイズにし、それぞれを圧縮後に 1 MB~1 GB にする必要があります。

オブジェクトプレフィックスを使ってロードファイルを識別する場合、各ファイルの名前に共通のプレフィックスを付けます。例えば、venue.txt ファイルを次のように 4 つのファイルに分割します。

venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

複数のファイルをバケットのフォルダーに置く場合、プレフィックスとしてフォルダー名を指定できます。COPY を実行すると、フォルダー内のすべてのファイルがロードされます。ロードするファイルが複数のバケットまたはフォルダーに分散している場合は、それらのファイルのリストをマニフェストファイルに明示的に指定します。

マニフェストファイルについて詳しくは、「Example: COPY from Amazon S3 using a manifest」を参照してください。