Existe-t-il un moyen de conserver une variable (grande table / bloc de données) en mémoire et de la partager entre plusieurs blocs-notes ipython?
Je chercherais quelque chose, qui est conceptuellement similaire aux variables persistantes de MATLAB. Là, il est possible d'appeler une fonction / bibliothèque personnalisée à partir de plusieurs éditeurs individuels (cahiers), et de faire en sorte que cette fonction externe cache un résultat (ou un grand tableau).
La plupart du temps, je voudrais éviter de recharger une table très utilisée (qui est chargée via une bibliothèque personnalisée appelée à partir des carnets), car la lecture prend environ 2-3 minutes chaque fois que je commence une nouvelle analyse.
Réponses:
Si c'est important pour vos cas d'utilisation, vous pouvez essayer de passer à Apache Zeppelin. Comme tous les blocs-notes Spark, ils partagent le même contexte Spark, le même environnement d'exécution Python. https://zeppelin.apache.org/
Donc, ce que vous demandez se produit nativement dans Zeppelin. Ou pour être complet, c'est une option pour partager le même contexte Spark / même environnement Python entre tous les blocs-notes Spark (ils sont appelés «notes» dans Zeppelin):
Vous pouvez donc choisir de partager le contexte globalement (comportement par défaut de Zeppelin), par note (le seul comportement possible de Jupyter) ou par utilisateur.
Si vous ne pouvez pas / ne voulez pas passer à Zeppelin, regardez d'autres options de partage de trames de données communes entre vos ordinateurs portables en utilisant:
ps. Vous ne pouvez pas importer de fichiers ipynb vers Zeppelin actuellement (il a son propre format de bloc-notes stocké en tant que fichier json), jusqu'à ce que https://issues.apache.org/jira/browse/ZEPPELIN-1793 soit implémenté; bien qu'il ne soit pas si difficile de les convertir manuellement dans la plupart des cas.
la source