带 --jars 的 Spark-Submit YARN-CLASS 不起作用?

2023-12-29

我正在尝试通过以下命令向 CDH 纱线集群提交 Spark 作业

我尝试了几种组合,但都不起作用...... 我现在所有的 poi jar 都位于我的本地 /root 以及 HDFS /user/root/lib 中,因此我尝试了以下操作

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars /root/poi-3.12.jars, /root/poi-ooxml-3.12.jar, /root/poi-ooxml-schemas-3.12.jar

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars file:/root/poi-3.12.jars, file:/root/poi-ooxml-3.12.jar, file:/root/poi-ooxml-schemas-3.12.jar

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars hdfs://mynamenodeIP:8020/user/root/poi-3.12.jars,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-3.12.jar,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-schemas-3.12.jar

如何将 jar 传播到所有集群节点?因为以上都不起作用,并且该作业仍然无法引用该类,因为我不断收到相同的错误:

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory

The 相同的命令适用于“--master local”,无需指定 --jars,因为我已将 jar 复制到 /opt/cloudera/parcels/CDH/lib/spark/lib。

然而,对于纱线集群模式,我需要将外部 jar 分发到所有集群,但上面的代码不起作用。

感谢您的帮助,谢谢。

附注我正在使用 CDH5.4.2 和 Spark 1.3.0


根据 Spark Submit 的帮助选项

  • --jars 包括要包含在驱动程序和执行程序类路径中的本地 jar。 [它只会设置路径]

  • ---files 会将应用程序运行所需的 jar 复制到执行器节点的所有工作目录 [它将把你的 jar 传输到
    工作目录]

Note:这类似于 hadoop Streaming 中的 -file 选项,它将映射器/减速器脚本传输到从节点。

因此也尝试使用 --files 选项。

$ spark-submit --help
Options:
  --jars JARS                 Comma-separated list of local jars to include on the driver
                              and executor classpaths.
  --files FILES               Comma-separated list of files to be placed in the working
                              directory of each executor.

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带 --jars 的 Spark-Submit YARN-CLASS 不起作用? 的相关文章

随机推荐