Эта проблема стара как Apache Spark, но все равно ни одно из решений мне не помогло. У меня есть следующее объявление класса:
object Main {
def main(args: Array[String]): Unit = {
...
}
Ссылка на класс - org.griat.rcse.Main (ctrl + shift + alt + c в IntelliJ), то же самое остается в pom.xml
:
<groupId>org.griat.rcse</groupId>
Как я пытаюсь его запустить:
spark-submit --master yarn --deploy-mode client --class org.griat.rcse.Main Glonass112-1.0-SNAPSHOT.jar
И однажды он сработал, но обнаружил исключение в коде. После того, как я исправил это, я clean
ed и package
d. Хотя pom.xml
не изменился (а также пути и имена классов), он перестал отправляться в Spark, показывая ClassNotFoundException
:
java.lang.ClassNotFoundException: org.griat.rcse.Main
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
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)
Я также добавил maven-jar-plugin
, но это не поможет :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.griat.rcse.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Что является источником этого черного мага c и как мне с этим справиться?