Bewährte Verfahren zum Laden großer Datenmengen aus einer Datei oder einer Verbindung

Wenn Sie in einem „ Python “-Notebook arbeiten, können Sie generierten Code verwenden, um Daten aus einer Datei oder einer Verbindung zu laden. Wenn Sie eigenen Code schreiben und die „ Flight service “-APIs nutzen müssen, um auf große Datenmengen aus einer Datei oder einer Verbindung zuzugreifen, sollten Sie die folgenden Empfehlungen beachten, um die Effizienz zu steigern und Speicherprobleme bei der Arbeit mit pandas- DataFrames zu vermeiden.

  • Verwenden Sie die Funktion `write_table`, um die Parameter für `max_chunksize` bei ` Flight service `-Schreibanfragen von einer pyarrow Tabelle an ` Db2 ` festzulegen. Überschreiten Sie bei Flight-Diensten nicht den Wert von 3MB für die Chunk-Größe bei maximaler Parallelität auf jeder Skalierungsebene. Chunk-Größen, die größer als 3MB sind, führen zu Speicherplatzmangel.
  • Erstellen Sie kleinere „ DataFrames “, indem Sie kleinere Teilmengen der Daten laden, oder verzichten Sie ganz auf die Verwendung von „pandas DataFrames “. Pandas verbrauchen viel Speicherplatz, viel mehr als die Menge der geladenen Daten.
  • Daten von Flight service mit dem pyarrowFlight service -Client abrufen. Sie müssen pandas nicht verwenden.
  • Führen Sie die Garbage Collection von „ Python “ manuell durch, wenn Sie viele Durchläufe von rechenintensiven Tests ausführen. Es ist möglich, dass die Garbage Collection nicht ordnungsgemäß ausgeführt werden kann, um freigegebenen Speicher zu bereinigen, wenn die CPU-Auslastung nie auf Null sinkt. Wenn man die Garbage Collection dazu zwingt, regelmäßig ausgeführt zu werden, kann dies dazu beitragen, den Speicherverbrauch zu senken.
  • Stellen Sie sicher, dass die Daten beim Auslesen aus dem Gültigkeitsbereich entfernt werden, damit sie von der Garbage Collection bereinigt werden.
  • Beachten Sie die Typunterschiede zwischen „ Apache Arrow Flight“ und „pandas“. Vergewissern Sie sich, dass Sie wissen, welche Apache Arrow -Flugtypen welchen Pandas-Typen zugeordnet sind. Weitere Informationen finden Sie unter „Typunterschiede “.
  • Stellen Sie sicher, dass das angeforderte Schema Typen enthält, mit denen pandas effizient arbeiten kann. Beispielsweise führen Dezimaltypen zu Objekten vom Typ „ Python “, die viel Speicherplatz beanspruchen. Fordern Sie diese Typen im Gleitkommaformat mit einfacher Genauigkeit an, um weniger Speicherplatz zu beanspruchen. Sie können Typen in einer SQL-Anweisung oder in der fields Eigenschaft einer Fluganfrage umwandeln.
  • Teilen Sie die Daten in Partitionen auf und bearbeiten Sie jeweils nur eine Partition, wenn eine Tabelle zu groß ist, um in einen einzigen „ DataFrame “ geladen zu werden.
  • Teilen Sie die Daten auf, indem Sie die num_partitions Eigenschaft in der Anfrage festlegen. Diese Anfrage gibt bis zu num_partitionsFlight service Endpunkte zurück, über die die Partitionen unabhängig voneinander gelesen werden können.
  • Reduzieren Sie die Anzahl der Spalten mithilfe einer SELECT Anweisung auf das Notwendige, wenn Sie sich an eine bestimmte Partitionsgröße halten müssen.
  • Ändern Sie die Stapelgröße der Abfrage „ Flight service “ und verarbeiten Sie die Tabelle „ DataFrames “ schrittweise, wenn Sie alle Spalten benötigen und die festgelegte Partitionsgröße sowie der Speicherverbrauch zu hoch sind.