Existe uma maneira de manter uma variável (tabela grande / quadro de dados) na memória e compartilhá-la entre vários notebooks ipython?
Eu estaria procurando por algo que seja conceitualmente semelhante às variáveis persistentes do MATLAB. É possível chamar uma função / biblioteca personalizada de vários editores individuais (notebooks) e fazer com que essa função externa armazene em cache algum resultado (ou tabela grande).
Principalmente, gostaria de evitar recarregar uma tabela muito usada (carregada através de uma biblioteca personalizada chamada dos blocos de anotações), pois a leitura demora cerca de 2 a 3 minutos sempre que inicio uma nova análise.
Respostas:
Se for importante para seus casos de uso, você pode tentar mudar para o Apache Zeppelin. Como todos os notebooks Spark compartilham o mesmo contexto Spark, o mesmo ambiente de execução Python. https://zeppelin.apache.org/
Então, o que você está pedindo acontece nativamente no Zeppelin. Ou, para ser completo, é uma opção para compartilhar o mesmo contexto Spark / mesmo ambiente Python entre todos os notebooks Spark (eles são chamados de 'notas' no Zeppelin):
Portanto, você pode optar por compartilhar o contexto Globalmente (comportamento padrão do Zeppelin), Por nota (o único comportamento possível do Jupyter) ou Por usuário.
Se você não pode / não deseja mudar para o Zeppelin, consulte outras opções de compartilhamento de quadros de dados comuns entre seus notebooks usando:
ps. Atualmente, você não pode importar arquivos ipynb para o Zeppelin (ele possui seu próprio formato de notebook armazenado como um arquivo json), até que https://issues.apache.org/jira/browse/ZEPPELIN-1793 seja implementado; embora não seja tão difícil convertê-los manualmente na maioria dos casos.
fonte