Есть ли способ сохранить переменную (большой стол / фрейм данных) в памяти и разделить ее между несколькими ноутбуками ipython?
Я бы искал что-то, что концептуально похоже на постоянные переменные MATLAB. Там можно вызывать пользовательскую функцию / библиотеку из нескольких отдельных редакторов (записных книжек), и эта внешняя функция кэширует некоторый результат (или большую таблицу).
В основном я хотел бы избежать перезагрузки интенсивно используемой таблицы (которая загружается через пользовательскую библиотеку, которая вызывается из записных книжек), поскольку чтение занимает около 2-3 минут всякий раз, когда я начинаю новый анализ.
Ответы:
Если это важно для ваших случаев использования, вы можете попробовать перейти на Apache Zeppelin. Как и все ноутбуки Spark, они имеют один и тот же контекст Spark и ту же среду исполнения Python. https://zeppelin.apache.org/
То, что вы спрашиваете, происходит в Цеппелине. Или, чтобы быть полным, это вариант для совместного использования одного и того же контекста Spark / одного и того же окружения Python между всеми ноутбуками Spark (в Zeppelin они называются «заметками»):
Таким образом, вы можете выбрать общий доступ к контексту (поведение Zeppelin по умолчанию), Per Note (единственно возможное поведение Jupyter) или Per User.
Если вы не можете / не хотите переключаться на Zeppelin, посмотрите другие варианты совместного использования общих кадров данных между вашими ноутбуками, используя:
пс. Вы не можете импортировать файлы ipynb в Zeppelin в настоящее время (у него есть собственный формат записной книжки, сохраненный как файл json), пока не будет реализован https://issues.apache.org/jira/browse/ZEPPELIN-1793 ; хотя в большинстве случаев преобразовать их вручную не так сложно.
источник