2016-10-13 56 views
0

我有一個熊貓數據框44k行表。當我嘗試將此表(或任何其他表)導出到Redshift數據庫時,該過程需要很長時間。我使用的SQLAlchemy來創建這樣一個conexion:SQLalchemy緩慢與紅移

import sqlalchemy as sal 
engine = sal.create_engine('redshift+psycopg2://blablamyhost/myschema') 

我用導出表的方法是大熊貓to_sql這樣的:

dat.to_sql(name="olap_comercial",con=eng,schema="monetization",index=False,if_exists="replace" ,dtype={"description":sal.types.String(length=271),"date_postoffer":sal.types.DATE}) 

這是正常的,它是如此之慢?我說的是15分鐘以上。

回答

1

是的,這是正常的是慢(且可能爲大型集羣慢)。常規的sql插入(由sqlalchemy生成)對於Redshift來說非常緩慢,應該避免。

您應該考慮使用S3作爲中間層的分期,您的數據流量將是: dataframe-> S3->紅移

理想情況下,你也應該上傳到S3之前gzip壓縮您的數據,這會提高你的性能也是如此。

這可以從使用BOTO3和psycopg2 https://boto3.readthedocs.io/en/latest/

+1

您的Python腳本進行協調,我寫了周圍boto3和psycopg2的包裝解決這一確切的問題:https://github.com/agawronski/pandas_redshift – AidanGawronski