导入在worker中运行的代码的模块

时间:2015-06-09 18:18:42

标签: apache-spark pyspark

我写了一个简单的工作,使用一个使用模块的自定义函数来过滤rdd。

放置import语句的正确位置在哪里?

  • 将导入放入驱动程序代码中并没有帮助
  • 将导入功能放入过滤器功能,但看起来不太好

1 个答案:

答案 0 :(得分:0)

您可以使用命令行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中工作,我相信你必须坚持在函数中导入模块。