Optimieren Sie den Prozess der Verarbeitung von Feather-Dateien, die größer als der Speicher sind, mithilfe von Python (Python

Python-Programme
Guest
 Optimieren Sie den Prozess der Verarbeitung von Feather-Dateien, die größer als der Speicher sind, mithilfe von Python (

Post by Guest »

Ich speichere Aktienkurse für verschiedene Entitäten als separate Feather-Dateien im S3-Bucket. Auf hoher Ebene sieht der Inhalt jeder Federdatei wie folgt aus.

Code: Select all

month | value | observation |
-----------------------------
2024-01 | 12 | High

2024-01 | 5 | Low
Eine in Python geschriebene Lambda-Funktion verwendet Pandas, um diese Daten zu aktualisieren – neue Zeilen einfügen, vorhandene Zeilen aktualisieren, Zeilen löschen usw.
Jeden Tag, wenn Wenn für eine bestimmte Entität neue Preise empfangen werden, liest der vorhandene Code die Feather-Datei für diese Entität in den Speicher (mithilfe von Pandas), verkettet die eingehenden neuen Daten und schreibt dann die aktualisierte Feather-Datei aus dem Speicher zurück in S3. Dies funktioniert vorerst gut, aber wenn die Größe dieser Feather-Dateien zunimmt, kommt es in einigen Fällen zu „Nicht genügend Speicher“-Ausnahmen, wenn Lambda versucht, während Zusammenführungsvorgängen eine große Feather-Datei in den Speicher zu laden. Dies ist der Fall, wenn ich dem Lambda 10 GB (maximal) Speicher zugewiesen habe.
Alle unterstützten Vorgänge – Zusammenführen, Aktualisieren, Löschen – werden im Speicher ausgeführt, sobald die Dateien vollständig geladen sind Speicher.
Gibt es eine bessere Möglichkeit oder eine andere Bibliothek, die mir helfen kann, diese Zusammenführungen/anderen Vorgänge durchzuführen, ohne alles in den Speicher zu laden? Ich überprüfe duckDB und es sieht so aus, als ob es Prädikat-Pushdowns auf Speicherebene unterstützt, Federdateien jedoch nicht nativ.
Suche nach anderen Ideen, um dieses Problem anzugehen.
Danke

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post