Я только что заметил небольшую проблему при использовании addPyFile
в PySpark и autoreload
в Jupyter Notebooks.
Что происходит, когда у меня есть некоторый код в модулях, которые я использую в пользовательских функциях PySpark, поэтому (насколько я знаю) эти модули нужно добавить как зависимости через addPyFile
, чтобы они были доступны для исполнителей.Я архивирую их и использую addPyFile
после того, как настроил сеанс PySpark.
Однако после этого изменения в этих модулях не загружаются автоматически, например, при работе в IPython / Jupyter Notebook.В частности, запуск
import mypath.mymodule as mm
import imp
imp.reload(mm)
обычно показывает путь к модулю, например, <module 'mypath.mymodule' from 'C:\\project\\mypath\\mymodule.py'>
Однако после инициализации Spark и отправки заархивированных файлов с помощью addPyFile
, приведенный выше кодбудет выводить что-то вроде: <module 'mypath.mymodule' from 'C:\\Users\\username\\AppData\\Local\\Temp\\spark-....\\userFiles-...\\zipped_modules.zip\\mypath\\mymodule.py'>
Т.е. кажется, что Spark переключается на использование кода из заархивированных (и кэшированных) модулей (даже в программе драйвера), поэтому изменения в исходном модуле не будут автоматически загружаться впрограмма драйвера.
Есть ли способ в этом случае автоматически перезагружать изменения из модулей в программе драйвера?