我正在使用pyspark写一个基本处理数据的火花流应用程序。
Inshort包装概述: 此应用程序包含几个模块和一些配置文件,这些文件是非.py文件(例如:.yaml或.json)。
我将整个应用程序打包在package.zip文件中并将此package.zip提交给spark。
现在的问题是我在纱线群集模式下发出spark-submit命令。我得到了IOError。下面是stacktrace
Traceback (most recent call last):
File "main/main.py", line 10, in <module>
import logger.logger
File "package.zip/logger/logger.py", line 36, in get_logger
IOError: [Errno 2] No such file or directory: 'logger/config.yaml'
Spark-Command: spark-submit --master yarn-cluster --py-files package.zip main / main.py
但是当我在纱线客户端模式下提交作业时,应用程序按预期工作。
我的理解:
在这两种情况下,package.zip可用于所有节点,那么为什么只有py文件被加载而非py文件无法在集群模式下加载。
任何人都可以帮助我了解这里的情况并解决问题吗?
更新 -
观察
在客户端模式压缩包在运行驱动程序脚本的路径中解压缩。 在群集模式中,zip包在所有节点上共享但未解压缩。 我需要在所有节点中解压缩包吗? 有没有办法告诉spark在工作节点解压缩包?
答案 0 :(得分:0)
您可以使用--files
选项传递多余的文件。
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-submit.html