Ich habe eine große Manifest-Datei mit ungefähr 460.000 Einträgen (alle S3-Dateien), die ich nach Redshift laden möchte. Aufgrund von Problemen, auf die ich keinen Einfluss habe, enthalten einige (möglicherweise ein Dutzend oder mehr) dieser Einträge einen fehlerhaften JSON, der dazu führt, dass ein COPY-Befehl fehlschlägt, wenn ich das gesamte Manifest gleichzeitig übergebe. Die Verwendung von COPY mit einem Schlüssel-Präfix schlägt ebenfalls auf die gleiche Weise fehl.Verwenden mehrerer Manifest-Dateien zum Laden von Redshift von S3?
Um dies zu umgehen habe ich ein Python-Skript geschrieben, das die Manifest-Datei URL für URL durchläuft und einen COPY-Befehl für jeden unter Verwendung von psycopg2 ausgibt. Das Skript erfasst und protokolliert außerdem alle Fehler, um sicherzustellen, dass das Skript auch dann ausgeführt wird, wenn es auf eine fehlerhafte Datei stößt, und ermöglicht es uns, die fehlerhaften Dateien zu finden und zu beheben.
Das Skript läuft jetzt seit etwas mehr als einer Woche auf einer Ersatz-EC2-Instanz und ist nur zu ca. 75% abgeschlossen. Ich möchte die Laufzeit verringern, da dieses Skript erneut verwendet wird.
Mein Verständnis von Redshift ist, dass COPY-Befehle parallel ausgeführt werden, und damit hatte ich eine Idee - wird die Manifest-Datei in kleinere Stücke aufteilen und dann das Skript jeden dieser Stücke reduzieren die Zeit alle zu laden die Dateien?