Apache spark spark群集模式下没有此类文件或目录

Apache spark spark群集模式下没有此类文件或目录,apache-spark,pyspark,spark-streaming,yarn,spark-submit,Apache Spark,Pyspark,Spark Streaming,Yarn,Spark Submit,我正在使用pyspark编写一个spark流应用程序,它基本上是处理数据的 短包装概述: 此应用程序包含几个模块和一些非.py文件的配置文件(例如:.yaml或.json) 我正在将整个应用程序打包在package.zip文件中,并将此package.zip提交给spark 现在的问题是,当我在纱线簇模式下发出spark submit命令时。我犯了一个错误。下面是stacktrace Traceback (most recent call last): File "main/main.p

我正在使用pyspark编写一个spark流应用程序,它基本上是处理数据的

短包装概述: 此应用程序包含几个模块和一些非.py文件的配置文件(例如:.yaml或.json)

我正在将整个应用程序打包在package.zip文件中,并将此package.zip提交给spark

现在的问题是,当我在纱线簇模式下发出spark submit命令时。我犯了一个错误。下面是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'
回溯(最近一次呼叫最后一次):
文件“main/main.py”,第10行,在
导入logger.logger
get_logger中第36行的文件“package.zip/logger/logger.py”
IOError:[Errno 2]没有这样的文件或目录:“logger/config.yaml”
火花指令: spark提交--主纱线簇--py files package.zip main/main.py

但当我以客户机模式提交作业时,应用程序按预期工作

我的理解是:

  • 当我以客户端模式提交作业时,spark驱动程序在我发出命令的同一台机器上运行。包分布在所有节点上
  • 当我在集群模式下发出命令时,spark驱动程序和应用程序主程序都在单个节点(不是提交代码的客户端)中运行,并且仍然将包分发到集群中的所有节点
  • 在这两种情况下,package.zip对所有节点都可用,那么为什么只有py文件被加载,而非py文件在集群模式下加载失败呢

    有谁能帮我了解一下这里的情况并解决问题吗

    更新--

    观察结果

    客户端模式下压缩包在驱动程序脚本运行的路径中解压缩。 其中,在集群模式下,zip包在所有节点上共享,但未解压缩。 我需要在这里解压所有节点中的包吗?
    有没有办法告诉spark在worker节点中解压包?

    您可以使用
    --files
    选项传递额外的文件


    虽然链接可能会解决问题,但最好在此处提供详细信息,而不仅仅是一个链接。@KarthickRamesh是对的,因为该链接已经不存在了!