apache-spark - 为在 worker 中运行的代码导入模块

标签 apache-spark pyspark

我写了一个简单的作业,它使用一个使用模块的自定义函数来过滤 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/

相关文章:

apache-spark - 当过滤损坏的记录字段时,Spark 的 .count() 函数与数据帧的内容不同

pandas - 使用 Apache Arrow 将 PySpark DataFrame 转换为 Pandas

python - Pyspark MapReduce对象列表

python - 在 PySpark 中使用正则表达式创建 N-Gram

python - 值错误 : too many values to unpack (while reducing with foldByKey)

json - 将 JSON 对象转换为 RDD

apache-spark - 如何读取 Spark 工作节点中的文件?

apache-spark - 带有 --files 参数错误的 PySpark spark-submit 命令

python - 如何使用 SQL 从秒列创建日期和小时列

python - 获取某列的 "circular lag"