5

Amazon redshift から S3 にテーブルをアンロードすると、テーブルがどんなに小さくても、常にテーブルが 2 つの部分に分割されます。アンロードに関するredshiftのドキュメントを読みましたが、テーブルが分割されることがあるという以外に答えはありません(そうしないのを見たことがありません)。2 つの質問があります。

  • ファイルが 1 つしか作成されないケースを見た人はいますか?

  • redshift を強制的に単一のファイルにアンロードする方法はありますか?

4

3 に答える 3

1

2014 年 5 月 6 日の時点で、UNLOADクエリは新しいPARALLELオプションをサポートしています。データが 6.2 GB 未満の場合、渡すPARALLEL OFFと 1 つのファイルが出力されます (データは 6.2 GB のチャンクに分割されます)。

于 2014-06-06T16:53:27.213 に答える
0

デフォルトでは、各スライスは 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 のようで、ノードが増えるか、より強力なノードが追加されると、さらに大きくなります。

于 2013-08-14T07:35:12.123 に答える