我正在嘗試將一個巨大的表格從postgres遷移到Redshift中。紅移插入瓶頸
表的大小爲約5697213832
工具:Pentaho的水壺表輸入(來自postgres的) - >表輸出(紅移)
與紅移JDBC4
通過觀察我發現插入到Redshift是瓶頸。僅約500行/秒。
有沒有什麼方法可以在單機模式下加速插入Redshift?像使用JDBC參數?
我正在嘗試將一個巨大的表格從postgres遷移到Redshift中。紅移插入瓶頸
表的大小爲約5697213832
工具:Pentaho的水壺表輸入(來自postgres的) - >表輸出(紅移)
與紅移JDBC4
通過觀察我發現插入到Redshift是瓶頸。僅約500行/秒。
有沒有什麼方法可以在單機模式下加速插入Redshift?像使用JDBC參數?
的主要原因的紅移性能,瓶頸我認爲是紅移每個命中對待到羣集作爲單個查詢。它在集羣上執行每個查詢,然後進入下一個階段。現在,當我發送多行(本例中爲10)時,每行數據都被視爲單獨的查詢。 Redshift逐個執行每個查詢,並且一旦執行所有查詢,就完成數據的加載。這意味着如果您擁有1億行,那麼您的Redshift羣集上將運行1億個查詢。那麼表現去傾倒!
使用S3 File Output步驟在PDI將加載數據至S3剷鬥然後紅移羣集上施加COPY命令來讀取從S3相同的數據到紅移。這將解決你的性能問題。
您也可以閱讀以下博客鏈接:
希望這有助於:)
你有沒有考慮使用S3作爲中間層?
將您的數據轉儲到csv文件並應用gzip壓縮。上傳文件到S3,然後使用copy
命令加載數據。
更好地將數據導出到S3,然後用COPY命令將數據導入Redshift。通過這種方式,導入過程很快,而您不需要將其抽真空。
將數據導出到S3存儲桶並在Redshift中使用COPY命令。 COPY命令是在Redshift中插入數據的最快方式。
如果您可以在S3上將輸出分割爲單獨的文件,那麼您可以使用清單工具來並行化您的負載。 http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-command-examples-manifest –