编程语言
首页 > 编程语言> > java-使用–jars提交spark-submit yarn-cluster不起作用?

java-使用–jars提交spark-submit yarn-cluster不起作用?

作者:互联网

我正在尝试通过以下命令将火花作业提交给CDH纱簇

我尝试了几种组合,但都无法正常工作…
现在,我所有的poi jars都位于本地/ 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

相同的命令可用于“ –master local”,而无需指定–jars,因为我已将jars复制到/ opt / cloudera / parcels / CDH / lib / spark / lib.

但是对于yarn-cluster模式,我需要将外部jar分发到所有群集,但是上面的代码不起作用.

感谢您的帮助,谢谢.

ps.我正在将CDH5.4.2与Spark 1.3.0一起使用

解决方法:

根据Spark提交的帮助选项

> –jars包含要包含在驱动程序和执行程序类路径中的本地jar. [它将设置路径]
> —文件将您运行应用程序所需的jar复制到执行程序节点的所有工作目录中[它将jar传输到
工作目录]

注意:这类似于hadoop流中的-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.

希望这可以帮助

标签:apache-spark,hadoop,yarn,cloudera-cdh,java
来源: https://codeday.me/bug/20191120/2040288.html