Amazon redshift から S3 にテーブルをアンロードすると、テーブルがどんなに小さくても、常にテーブルが 2 つの部分に分割されます。アンロードに関するredshiftのドキュメントを読みましたが、テーブルが分割されることがあるという以外に答えはありません(そうしないのを見たことがありません)。2 つの質問があります。
ファイルが 1 つしか作成されないケースを見た人はいますか?
redshift を強制的に単一のファイルにアンロードする方法はありますか?
Amazon redshift から S3 にテーブルをアンロードすると、テーブルがどんなに小さくても、常にテーブルが 2 つの部分に分割されます。アンロードに関するredshiftのドキュメントを読みましたが、テーブルが分割されることがあるという以外に答えはありません(そうしないのを見たことがありません)。2 つの質問があります。
ファイルが 1 つしか作成されないケースを見た人はいますか?
redshift を強制的に単一のファイルにアンロードする方法はありますか?
2014 年 5 月 6 日の時点で、UNLOAD
クエリは新しいPARALLEL
オプションをサポートしています。データが 6.2 GB 未満の場合、渡すPARALLEL OFF
と 1 つのファイルが出力されます (データは 6.2 GB のチャンクに分割されます)。
デフォルトでは、各スライスは 1 つのファイルを作成します (以下で説明)。既知の回避策がありLIMIT
ます。最も外側のクエリに a を追加すると、リーダー ノードが応答全体を処理するように強制されるため、ファイルが 1 つだけ作成されます。
SELECT * FROM (YOUR_QUERY) LIMIT 2147483647;
LIMIT
これは、句が符号なし整数引数を取るため、内部クエリが 2^31 - 1 未満のレコードを返す場合にのみ機能します。
ファイルはどのように作成されますか? http://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.html
Amazon Redshift は、select ステートメントの結果を一連のファイル (ノード スライスごとに 1 つ以上のファイル) に分割して、データの並列リロードを簡素化します。
これで、スライスごとに少なくとも 1 つのファイルが作成されることがわかりました。しかし、スライスとは何ですか?http://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html
スライスの数は、ノード上のプロセッサ コアの数と同じです。たとえば、各 XL 計算ノードには 2 つのスライスがあり、各 8XL 計算ノードには 16 のスライスがあります。
スライスの最小数は 2 のようで、ノードが増えるか、より強力なノードが追加されると、さらに大きくなります。