spark-submit提交报错java.lang.ClassNotFoundException: zxc.test.wordcount.scala.wc

跟您的是差不多的
(一)jar不在hdfs上的时候提交spark任务成功,使用的命令:
spark-submit --master spark://192.168.244.130:7077 --class cn.com.cnpc.klmy.common.WordCount2 --executor-memory 1G --total-executor-cores 2 /root/modelcall-2.0.jar
(二)而当jar在hdfs上的时候提交spark任务报错:classNotFoundException呢?,命令如下:
spark-submit --master spark://192.168.244.130:7077 --class cn.com.cnpc.klmy.common.WordCount2 --executor-memory 1G --total-executor-cores 2 hdfs://192.168.244.130:9000/mdjar/modelcall-2.0.jar

请教各位大咖这到底是什么原因造成的?望各位大咖不吝赐教!

注:hdfs能够正常访问,代码里面产生的结果存在hdfs上(第一情况正常运行,在hdfs上能够查看到结果)
请问您当时是怎么解决的?求

在提交 Spark 任务时出现 ClassNotFoundException 的错误通常是由于 Spark 集群无法找到所需的类文件。这种情况常见于将 JAR 文件存储在 HDFS 上时。

以下是一些可能导致该问题的原因和解决方法:

  1. 确保 JAR 文件在 HDFS 上的路径是正确的,可以使用 Hadoop 命令 hdfs dfs -ls 来验证路径是否正确。确保你指定了正确的文件路径和文件名。

  2. 确保 Spark 集群可以访问到 HDFS 上的 JAR 文件。你可以通过尝试在集群中的某个节点上使用 wgetcurl 命令下载 JAR 文件来验证文件是否可访问。

  3. 检查 Spark 提交任务时的参数是否正确。确保 --class 参数指定的类是 JAR 文件中包含的有效类,并且与你的代码中的类名一致。

  4. 如果你使用的是外部依赖库,例如第三方库或其他自定义库,请确保这些依赖库也包含在 JAR 文件中。Spark 集群需要能够在运行任务时找到所有的依赖库。

  5. 可能需要在 spark-submit 命令中添加 --jars 参数,用于指定依赖的 JAR 文件。例如:spark-submit --master spark://192.168.244.130:7077 --class cn.com.cnpc.klmy.common.WordCount2 --executor-memory 1G --total-executor-cores 2 --jars hdfs://192.168.244.130:9000/mdjar/dependency.jar hdfs://192.168.244.130:9000/mdjar/modelcall-2.0.jar。确保将依赖的 JAR 文件路径正确指定。

请注意,以上解决方法仅供参考,具体的解决方法可能因环境和配置而有所不同。如果问题仍然存在,建议检查日志文件以获取更详细的错误信息来帮助定位问题所在。