Автозагрузка изменений в модулях, которые добавляются как зависимость 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 переключается на использование кода из заархивированных (и кэшированных) модулей (даже в программе драйвера), поэтому изменения в исходном модуле не будут автоматически загружаться в программу драйвера.

Есть ли способ сохранить автозагрузку изменений из модулей в программе драйвера в этом сценарии?

0 ответов

Другие вопросы по тегам