我写了一个简单的作业,它使用一个使用模块的自定义函数来过滤 rdd。
放置导入语句的正确位置在哪里?
- 将导入放入驱动程序代码中没有帮助
- 将导入放入过滤器函数中可以,但看起来不太好
最佳答案
您可以使用命令行 spark-submit
界面将作业作为依赖模块的批处理操作提交。来自 Spark 1.6.1 documentation , 它具有以下签名 ...
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
如果您的 python 脚本名为 python_job.py
并且它所依赖的模块是 other_module.py
,您将调用
./bin/spark-submit python_job.py --py-files other_module.py
这将确保 other_module.py 在工作节点上。更常见的是您会提交完整的包,因此您会提交 other_module_library.egg
甚至 .zip
。这些在 --py-files
中都应该是可以接受的。
但是,如果您想在交互式 shell 中工作,我相信您必须坚持在函数中导入模块。
关于apache-spark - 为在 worker 中运行的代码导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30739814/