簡體   English   中英

如何減少在 Amazon Redshift 中將 pandas 數據幀寫入表的時間

[英]How to reduce the time to write pandas dataframes as table in Amazon Redshift

我正在使用這個在 Amazon Redshift 中編寫 python pandas 數據框 -

df.to_sql('table_name', redshiftEngine, index = False, if_exists = 'replace' )

雖然我的數據框只有幾千行和 50-100 列,但寫一張表需要 15-20 分鍾。 我想知道這是否是紅移的正常表現? 有什么辦法可以優化這個過程,加快寫表的速度嗎?

更好的方法是使用pandas將數據框存儲為CSV,然后將其上傳到S3,然后使用COPY功能加載到Redshift中。 這種方法甚至可以輕松處理數億行。 通常,Redshift的寫入性能不是很好-它用於處理由大量ETL操作(如COPY )轉儲的數據負載。

我同意將數據上傳到 Redshift 的更好方法是將文件作為 .csv 文件上傳到 S3 存儲桶,然后從那里讀取文件。

首先,將文件保存為.csv 文件。 如果您在 excel 中這樣做,那么 select 'CSV UTF-8(逗號分隔)' 可以正確處理特殊字符。 然后運行這些代碼(相應地修改部分)。 這是一個兩列表; 如果您有更大的桌子,請添加更多。

DROP TABLE IF EXISTS table.table;

CREATE TABLE IF NOT EXISTS table.table
(
    col1            VARCHAR(1024)   ENCODE lzo,
    col2            VARCHAR(1024)   ENCODE lzo
);


copy table.table
from 's3://address/address/address/file_name.csv'
CREDENTIALS 'aws_access_key_id=#################;aws_secret_access_key=####################'
FORMAT CSV
DELIMITER ','
IGNOREHEADER 1
region 'region_name'
--ACCEPTINVCHARS
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM