【问题标题】:Spark-submit in cluster mode集群模式下的 Spark-submit
【发布时间】:2020-04-28 18:41:08
【问题描述】:

在集群模式下启动 Spark 应用程序时遇到问题

这是 .sh :

export SPARK_MAJOR_VERSION=2
spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --driver-memory 8G \
  --executor-memory 8G \
  --total-executor-cores 4 \
  --num-executors 4 \
  /home/hdfs/spark_scripts/ETL.py &> /home/hdfs/spark_scripts/log_spark.txt

在 YARN 日志中,我发现“ETL.py”中存在与我需要的 .py 文件相关的导入错误。换句话说,在“ETL.py”中,我有一行我这样做: 导入应用程序

AppUtilit.py 与 ETL.py 路径相同 在本地模式下,它可以工作 这是纱线日志: 20/04/28 10:59:59 INFO compress.CodecPool: 得到全新的解压器 [.deflate] 容器:ftpandbit02.carte.local_45454 上的 container_e64_1584554814241_22431_02_000001 日志聚合类型:聚合 日志类型:标准输出 LogLastModifiedTime:2020 年 4 月 28 日星期二 10:57:10 +0200 日志长度:138 日志内容: 回溯(最近一次通话最后): 文件“ETL.py”,第 8 行,在 导入应用程序 ImportError: 没有名为 AppUtility 的模块

日志类型结束:stdout


LogType 结束:prelaunch.err

【问题讨论】:

    标签: apache-spark pyspark hadoop-yarn


    【解决方案1】:

    这取决于客户端模式或集群模式。

    • 如果您在 Yarn 客户端模式下使用 Spark, 您需要在 Yarn 启动执行程序的机器上安装任何依赖项。这是完成这项工作的唯一可靠方法。

    • 将 Spark 与 Yarn 集群模式结合使用是另一回事。您可以使用

    • 分发 python 依赖项

    spark-submit ./bin/spark-submit --py-files AppUtility.py /home/hdfs/spark_scripts/ETL.py

    --py-files 指令将文件发送给 Spark 工作人员,但不会将其添加到 PYTHONPATH。

    要将依赖项添加到 PYTHONPATH 以修复 ImportError,请将以下行添加到 Spark 作业 ETL.py

    sc.addPyFile(PATH)

    PATH:AppUtility.py(可以是本地文件、HDFS 中的文件、zip 或 HTTP、HTTPS 或 FTP URI)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2015-04-30
      • 2018-10-25
      • 2016-04-18
      • 2017-03-03
      相关资源
      最近更新 更多