繁体   English   中英

集群模式下的 Spark-submit

[英]Spark-submit in cluster mode

我在集群模式下启动 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”中有一个与我需要的 a.py 文件相关的导入错误。 换句话说,在“ETL.py”中,我有一行我这样做:import AppUtility

AppUtilit.py 与 ETL.py 位于同一路径 在本地模式下,它可以工作 这是 YARN 日志:20/04/28 10:59:59 INFO compress.CodecPool:得到全新的解压缩器 [.deflate] 容器: container_e64_1584554814241_22431_02_000001 on ftpandbit02.carte.local_45454 LogAggregationType: AGGREGATED LogType:stdout LogLastModifiedTime:Tue Apr 28 10:57:10 +0200 2020 LogLength:138 LogContents: Traceback"(最近一次调用 last.py):文件“ETL”行导入 AppUtility ImportError:没有名为 AppUtility 的模块

日志类型结束:stdout


LogType 结束:prelaunch.err

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

  • 如果您在 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 (It can be either a local file, a file in HDFS,zip or an HTTP, HTTPS or FTP URI)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM