2015-10-18 66 views
0

我正在使用AWS Redshift通過COPY命令加載多個S3文件。我通過清單來做這件事。我們可能有多個清單文件需要在任何時間點加載到Redshift中。將多個清單文件加載到Redshift中的最佳方式是什麼?Redshift - 複製多個清單文件

是否可以執行復制命令傳遞清單文件的列表/數組像下面?

copy schema.table_name 
from 's3://my-bucket/manifest1.manifest', 's3://my-bucket/manifest2.manifest', 's3://my-bucket/manifest3.manifest' 
credentials 'aws_access_key_id=XXXX;aws_secret_access_key=YYYY' 
manifest gzip format as json 'auto'; 

還是可以從不同的應用程序執行多個複製命令,而不會影響Redshift的整體性能太多?我並行執行多個副本命令的問題在於,它在執行副本時會引入資源爭用。

回答

1

我最終做的是將多個清單文件的內容加入超級清單。因此,我不是爲500個清單文件執行500個單獨的COPY命令,而是將500個清單的內容連接成一個超級清單,然後執行Redshift COPY。

性能改善顯着。 Redshift單個清單COPY約需3分鐘。連接500到1超級艙單需要45-90分鐘。

0

對於大量數據運行一個大COPY的問題是,Redshift會在磁盤上分配預期表的最大大小,這可能會導致DISK FULL異常,如果要拆分COPY命令轉換爲多個COPY(*將會一個接一個地運行,NOT)。 爲了最大化並行性,記住Redshift羣集中的核心數量也很重要。

+0

已經有解決方案,甚至更多OP自己解決了他自己的問題。 –

+0

我知道,但我認爲有必要提到他的解決方案可能不適用於所有情況,對於到此爲止的人(像我一樣)事先知道 – JustinCase

+0

好,因爲您相信您的解決方案很好。可以留在這裏。 :-) –