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
Update
Wir führen eine Datumspartitionierung nach Jahr für Feather-Dateien durch. Das verlangsamt den Zusammenführungsvorgang, da ich mehrere Partitionen bearbeiten muss, falls die eingehenden Daten (in diesem Fall manuelles Laden) Datenpunkte aus verschiedenen Jahren enthalten.
Auch wenn der Benutzer danach fragt Daten, die sich über mehrere Jahre erstrecken ... zum Beispiel könnte die Abfrage lauten -> Geben Sie mir alle Daten mit „Hoch“-Beobachtung, ich muss immer noch mehrere Partitionen besuchen, was die Dinge verlangsamen kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post