2016-08-25 12 views
1

Ich habe ein datenbankähnliches Objekt, das viele dask-Datenframes enthält. Ich möchte mit den Daten arbeiten, sie speichern und sie am nächsten Tag neu laden, um die Analyse fortzusetzen.Dask: Ist es sicher, einen Datenrahmen für die spätere Verwendung zu picken?

Daher habe ich versucht, dask Datenrahmen (nicht Berechnungsergebnisse, nur der "Plan der Berechnung" selbst) mit Gurke zu speichern. Anscheinend funktioniert es (zumindest, wenn ich die Objekte auf genau der gleichen Maschine entpacke) ... aber gibt es einige Fallstricke?

+1

Sie können auf jeder Maschine unpickle und erhalten das gleiche Ergebnis. – grael

+0

Also ist es genug, um sicherzustellen, dass die Daten, die den Datenrahmen zugrunde liegen, unter dem gleichen Pfad zugänglich sind und dann sollte es sicher sein? –

+0

Ja, es sollte sicher sein. Pickle speichert alles, was Sie benötigen, um das Objekt in den Zustand zu versetzen, in dem es sich befand, als es gebeizt wurde. – grael

Antwort

2

Im Allgemeinen ist es normalerweise sicher. Es gibt jedoch ein paar Einschränkungen:

  1. Wenn Ihre dask.dataframe benutzerdefinierte Funktionen enthält, wie zum Beispiel mit mit df.apply(lambda x: x) dann der internen Funktion nicht pickleable sein wird. Es ist jedoch weiterhin serialisierbar mit cloudpickle
  2. Wenn Ihr_ask.datareframe Verweise auf Dateien enthält, die nur auf Ihrem lokalen Computer gültig sind, ist die re-serialisierte Version auf einem anderen Computer möglicherweise nicht mehr nützlich, obwohl sie noch serialisierbar ist
  3. Wenn Ihr_desk.dataframe dask.distributedFuture Objekte enthält, wie sie beispielsweise auftreten würden, wenn Sie Executor.persist auf einem Cluster verwenden, dann sind diese derzeit nicht serialisierbar.
  4. Ich empfehle eine Version> = 0.11.0.
Verwandte Themen