Gibt es eine Möglichkeit, eine Variable (große Tabelle / Datenrahmen) im Speicher zu behalten und für mehrere Ipython-Notizbücher freizugeben?
Ich würde nach etwas suchen, das konzeptionell den persistenten Variablen von MATLAB ähnlich ist. Dort ist es möglich, eine benutzerdefinierte Funktion / Bibliothek von mehreren einzelnen Editoren (Notizbüchern) aufzurufen und diese externe Funktion ein Ergebnis (oder eine große Tabelle) zwischenspeichern zu lassen.
Meistens möchte ich vermeiden, eine häufig verwendete Tabelle neu zu laden (die über eine benutzerdefinierte Bibliothek geladen wird, die aus den Notizbüchern aufgerufen wird), da das Lesen bei jedem Start einer neuen Analyse etwa 2-3 Minuten dauert.
Antworten:
Wenn es für Ihre Anwendungsfälle wichtig ist, können Sie versuchen, zu Apache Zeppelin zu wechseln. Da alle Spark-Notebooks dort denselben Spark-Kontext und dieselbe Python-Laufumgebung verwenden. https://zeppelin.apache.org/
Was Sie also fragen, geschieht nativ in Zeppelin. Um vollständig zu sein, können Sie alle Spark-Notebooks denselben Spark-Kontext / dieselbe Python-Umgebung verwenden (sie werden im Zeppelin als "Notizen" bezeichnet):
Sie können also wählen, ob Sie den Kontext global (Standardverhalten von Zeppelin), pro Notiz (das einzig mögliche Verhalten von Jupyter) oder pro Benutzer freigeben möchten.
Wenn Sie nicht zu Zeppelin wechseln können / möchten, sehen Sie sich andere Optionen für die gemeinsame Nutzung gemeinsamer Datenrahmen zwischen Ihren Notebooks an:
ps. Sie können derzeit keine ipynb-Dateien in Zeppelin importieren (das eigene Notebook-Format ist als JSON-Datei gespeichert), bis https://issues.apache.org/jira/browse/ZEPPELIN-1793 implementiert ist. obwohl es in den meisten Fällen nicht so schwer ist, sie manuell zu konvertieren.
quelle