火花集群模式中没有此类文件或目录

时间:2018-06-03 15:39:01

标签: apache-spark pyspark spark-streaming yarn spark-submit

我正在使用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

但是当我在纱线客户端模式下提交作业时,应用程序按预期工作。

我的理解:

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

    任何人都可以帮助我了解这里的情况并解决问题吗?

    更新 -

    观察

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

1 个答案:

答案 0 :(得分:0)

相关问题