簇模式下的Spark-submit

问题描述 投票:0回答:1

我面临着在集群模式下启动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 "中,我有一行这样做:导入AppUtility。换句话说,在 "ETL.py "中,我有一行这样做:导入AppUtility。

Got brand-new decompressor [.deflate]Container: container_e64_1584554814241_22431_02_000001 on ftpandbit02.carte.local_45454LogAggregationType: AGGREGATEDLogType:stdoutLogLastModifiedTime:Tue Apr 28 10:57:10 +0200 2020LogLength:138LogContents:Traceback (最近一次调用)。 文件 "ETL.py",第8行,在import AppUtilityImportError中,没有名为AppUtility的模块。没有名为AppUtility的模块

日志类型:stdout结束


日志类型:prelaunch.err结束

apache-spark pyspark yarn
1个回答
1
投票

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

  • 如果你在Yarn客户端模式下使用Spark,你需要在Yarn启动执行器的机器上安装任何依赖关系。这是唯一可以确保工作的方法。

  • 在Yarn集群模式下使用Spark,则是另一个故事。你可以用

火花提交.binspark-submit。 --py-files AppUtility.py。 homehdfsspark_scriptsETL.py

--py-files指令将文件发送到Spark Worker,但没有将其添加到PYTHONPATH中。

要将依赖关系添加到PYTHONPATH中以修复ImportError,请在Spark作业ETL.py中添加以下一行内容

sc.addPyFile(PATH)

途径: AppUtility.py (它可以是一个本地文件、HDFS中的文件、zip或一个HTTP、HTTPS或FTP URI)

© www.soinside.com 2019 - 2024. All rights reserved.