spark-отправить исключение ClassNotFound с помощью Maven

#maven #apache-spark #spark-streaming

#maven #apache-spark #искровая передача

Вопрос:

Я понимаю, что с этим связаны вопросы, но я просто не могу заставить свой код работать.

Я запускаю потоковое приложение Spark в автономном режиме с главным узлом на моем хосте Windows и рабочим на виртуальной машине Ubuntu. Вот в чем проблема: когда я запускаю spark-submit, появляется вот что:

  >spark-submit --master spark://192.168.56.1:7077 --class spark.example.Main  C:/Users/Manuel Mourato/xxx/target/ParkMonitor-1.0-SNAPSHOT.jar
Warning: Skip remote jar C:/Users/Manuel.
java.lang.ClassNotFoundException: spark.example.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:175)
    at   org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:689)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
  

Я создал этот файл jar с помощью Maven, используя «пакет» в IntelliJ.
Вот как я настраиваю свой контекст SparkStreaming:

  SparkConf sparkConfiguration= new SparkConf().setAppName("ParkingDataAnalysis").setMaster("spark://192.168.56.1:7077");
 JavaStreamingContext sparkStrContext=new JavaStreamingContext(sparkConfiguration, Durations.seconds(1));
  

Кто-нибудь может мне помочь? Большое вам спасибо.

Ответ №1:

У вас есть пробел в имени папки, пожалуйста, добавьте кавычки («) и повторите попытку

spark-submit --master spark://192.168.56.1:7077 --class spark.example.Main "C:/Users/Manuel Mourato/xxx/target/ParkMonitor-1.0-SNAPSHOT.jar"

Еще один, из документов: a pplication-jar: Path to a bundled jar including your application and all dependencies. The URL must be globally visible inside of your cluster, for instance, an hdfs:// path or a file:// path that is present on all nodes.

Поэтому, пожалуйста, скопируйте ваш файл в HDFS или в одно и то же место на всех узлах. Это было бы сложно в сочетании Linux и Windows 😉 Я настоятельно рекомендую настроить HDFS

Комментарии:

1. @manuelmourato пожалуйста, посмотрите Обновление, я забыл об одной, но важной вещи