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