python - 在驱动程序中作为 PySpark 依赖项添加的模块中的自动重新加载更改
问题描述
addPyFile
在 PySpark 和autoreload
Jupyter Notebooks 中使用时,我刚刚注意到一个微妙的问题。
发生的情况是我在 PySpark UDF 中使用的模块中有一些代码,因此(据我所知)这些模块需要通过添加作为依赖项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 似乎切换为使用来自压缩(和缓存)模块(甚至在驱动程序中)的代码,因此原始模块中的更改不会在驱动程序中自动重新加载。
在这种情况下,有没有办法继续自动重新加载驱动程序中模块的更改?
解决方案
推荐阅读
- c# - 为什么 NLog 在控制器中工作而不在 Program.cs 中工作?
- php - Laravel 'belongsTo' 关系不起作用,不知道为什么
- asp.net-core - 将自定义模型类添加到 Swagger 文档
- python - 计算numpy数组中一行中重复元素的数量
- azure - 基于路径的作业条件
- javascript - 如何将我的文本添加到发送我的窗口进行打印的功能
- sql - 关于一些代码来查找不在表格中的所有内容的逻辑?
- javascript - SurveyJS:在 React 中禁用自动感谢消息
- leaflet - Drupal 8 - 传单模块
- powershell - 使用 Powershell 从 Avaya 导出数据