java - Spark-提交找不到类(ClassNotFoundException)

标签 java apache-spark jar

我尝试在脚本中使用以下代码运行文件夹中的 Main 类:

spark-shell --class com.navercorp.Main /target/node2vec-0.0.1-SNAPSHOT.jar --cmd node2vec  ../graph/karate.edgelist --output ../walk/walk.txt 

但它会引发错误:

19/07/05 14:39:20 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
19/07/05 14:39:20 WARN deploy.SparkSubmit$$anon$2: Failed to load com.navercorp.Main.
java.lang.ClassNotFoundException: com.navercorp.Main
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:810)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我的文件夹中有 jar 文件,结构如下: enter image description here

另外,我附上jar文件的结构:

META-INF/MANIFEST.MF
log4j2.properties
com/
com/navercorp/
com/navercorp/Node2vec$.class
com/navercorp/Main$Params$$typecreator1$1.class
com/navercorp/Main$$anon$1$$anonfun$11.class
com/navercorp/Word2vec$.class
com/navercorp/Main$$anon$1$$anonfun$8.class
com/navercorp/Node2vec$$anonfun$randomWalk$1$$anonfun$8.class
com/navercorp/Node2vec$$anonfun$indexingGraph$4.class
com/navercorp/Node2vec$$anonfun$initTransitionProb$1.class
com/navercorp/Main$.class
com/navercorp/Node2vec$$anonfun$loadNode2Id$1.class
com/navercorp/Node2vec$$anonfun$14.class
com/navercorp/Node2vec$$anonfun$readIndexedGraph$2$$anonfun$1.class

有人可以给我连接主类的建议吗?

最佳答案

这只是一个猜测,但我认为当您打算使用相对路径时,您不小心为 .jar 文件使用了绝对路径。

尝试一下 spark-shell --class com.navercorp.Main target/node2vec-0.0.1-SNAPSHOT.jar --cmd node2vec ../graph/karate.edgelist --output ../walk/walk.txt

而不是 spark-shell --class com.navercorp.Main /target/node2vec-0.0.1-SNAPSHOT.jar --cmd node2vec ../graph/karate.edgelist --output ../walk/walk.txt

关于java - Spark-提交找不到类(ClassNotFoundException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56908305/

相关文章:

apache-spark - 如何通过 pyspark 将十六进制数据插入 Cassandra 中的 blob 数据类型列

apache-spark - Dataset.rdd 是 Action 还是转换?

java - 使用 ant 使用库创建可执行 jar 后出现 NoClassDefFoundError

java - 从 Java 的角度看 C 指针和数组的教程

java - 如何使用主机名 validator ?

scala - 从数据帧制作 avro 模式 - spark - scala

java - 连接 sql server JAR 文件

java - Gradle mavenDeployer - 如何包含单独的模块代码

arrays - JDK 的数组与 Guava 的 ImmutableList

Java为mysql插入子查询sql语句