2016-10-13 3 views
0

Ich habe eine 44k Zeilen Tabelle in einem Pandas Data Frame. Wenn ich versuche, diese Tabelle (oder eine andere Tabelle) in eine Redshift-Datenbank zu exportieren, dauert dieser Prozess ewig. Ich verwende sqlalchemy ein conexion wie diese zu erstellen:SQLalchemy langsam mit Redshift

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

Die Methode, die ich um die Tabellen zu exportieren verwenden ist Pandas to_sql wie folgt aus:

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}) 

Ist es normal, dass es so langsam ist? Ich rede von mehr als 15 Minuten.

Antwort

1

Ja, es ist normal, dass langsam (und möglicherweise für große Cluster langsamer). Reguläre SQL-Einfügungen (wie von sqlalchemy generiert) sind für Redshift sehr langsam und sollten vermieden werden.

Sie sollten mit S3 als Zwischenstufenschicht betrachten, wird Ihr Datenfluss sein: dataframe-> S3-> Rotverschiebung

Idealerweise sollten Sie Ihre Daten gzip auch vor dem S3 hochladen, wird diese Verbesserung Ihres Leistung auch.

kann von Ihrem Python-Skript koordiniert werden mit BOTO3 und psycopg2 https://boto3.readthedocs.io/en/latest/

+1

ich einen Wrapper um boto3 und psycopg2 schrieb genau dieses Problem zu lösen: https://github.com/agawronski/pandas_redshift – AidanGawronski