Автозагрузка изменений в модулях, которые добавляются как зависимость PySpark в программу Driver
Я просто заметил тонкую проблему при использовании addPyFile
в PySpark и autoreload
в ноутбуках Jupyter.
Что происходит, так это то, что у меня есть некоторый код в модулях, которые я использую в пользовательских функциях 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 переключается на использование кода из заархивированных (и кэшированных) модулей (даже в программе драйвера), поэтому изменения в исходном модуле не будут автоматически загружаться в программу драйвера.
Есть ли способ сохранить автозагрузку изменений из модулей в программе драйвера в этом сценарии?