2014-09-18 2 views
4

Я использую MavenСпарк Кафка Streaming Выпуск

я добавил следующие зависимости

<dependency> <!-- Spark dependency --> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming_2.10</artifactId> 
     <version>1.1.0</version> 
    </dependency> <dependency> <!-- Spark dependency --> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming-kafka_2.10</artifactId> 
     <version>1.1.0</version> 
    </dependency> 

Я также добавил баночку в коде

SparkConf sparkConf = new SparkConf().setAppName("KafkaSparkTest"); 
JavaSparkContext sc = new JavaSparkContext(sparkConf); 
sc.addJar("/home/test/.m2/repository/org/apache/spark/spark-streaming-kafka_2.10/1.0.2/spark-streaming-kafka_2.10-1.0.2.jar"); 
JavaStreamingContext jssc = new JavaStreamingContext(sc, new Duration(5000)); 

Это комплексе, отлично с любой ошибка, я получаю следующую ошибку, когда я запускаю spark-submit, любая помощь очень ценится. Спасибо за ваше время.

bin/spark-submit --class "KafkaSparkStreaming" --master local[4] try/simple-project/target/simple-project-1.0.jar 

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils at KafkaSparkStreaming.sparkStreamingTest(KafkaSparkStreaming.java:40) at KafkaSparkStreaming.main(KafkaSparkStreaming.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:303) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:55) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.streaming.kafka.KafkaUtils at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

+0

Ваш метод addJar не требуется. Однако вы должны добавить плагин и пакет сборки maven в файле .jar с включенными зависимостями (не найти зависимость от искры-кафки). – gasparms

+0

Я добавил spark-streaming-kafka_2.10 в список зависимостей в pom – mithra

+0

благодаря добавлению плагина сборки maven. – mithra

ответ

9

Я встречаюсь с такой же проблемой, я решил, что путем строить банку с зависимостями.

  1. удалить "sc.addJar()" в вашем коде.

  2. добавить следующий код в pom.xml

    <build> 
        <sourceDirectory>src/main/java</sourceDirectory> 
        <testSourceDirectory>src/test/java</testSourceDirectory> 
        <plugins> 
         <!-- 
            Bind the maven-assembly-plugin to the package phase 
         this will create a jar file without the storm dependencies 
         suitable for deployment to a cluster. 
         --> 
         <plugin> 
         <artifactId>maven-assembly-plugin</artifactId> 
         <configuration> 
          <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <archive> 
          <manifest> 
           <mainClass></mainClass> 
          </manifest> 
          </archive> 
         </configuration> 
         <executions> 
          <execution> 
          <id>make-assembly</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          </execution> 
         </executions> 
         </plugin> 
        </plugins> 
    </build>  
    
  3. МВН пакет

  4. представить "пример-банку-с-dependencies.jar"

+0

Я добавил вышеперечисленные строки в pom.xml, но проблема все еще остается. –

+0

Спасибо secfree !!! Ваше предложение помогло мне. –

0

для будущего ссылка, если вы получите исключение ClassNotFoundException, если вы выполните поиск «org.apache.spark ...», вас отправят на страницу maven, где он скажет вам, какая вам не хватает в вашем файле pom. Он также предоставит вам код для ввода вашего файла pom.

Смежные вопросы