0

SparkストリーミングAPIを使用しているときにNoClassDefFoundErrorerrorを取得しました。ここに私のストリーミングコードがあります。java.lang.NoClassDefFoundError:org/apache/kafka/common/message/KafkaLZ4BlockOutputStream

私はこれがいくつかの瓶詰めや依存関係の問題であることを知っていますが、それが何であるかを正確に把握できませんでした。

私はkafka 0.9.0、spark 1.6.1を使用しています - これらの依存関係は問題ありませんか、それとも変更する必要がありますか?私は以下のpom.xmlを添付しています。

私が使用しているストリーミングAPIは次のとおりです。

JavaPairInputDStream directKafkaStream = KafkaUtils.createDirectStream(jsc、String.class、 byte []。class、StringDecoder.class、DefaultDecoder.class、kafkaParams、topicSet);

ここは私のコードです。私はしばらくの間でエラーが発生します(itr.next())

directKafkaStream.foreachRDD(rdd -> { 

    rdd.foreachPartition(itr -> { 


     try { 

      while (itr.hasNext()) { 

ます。java.lang.NoClassDefFoundError:orgの/ apacheの/カフカ/共通/メッセージは、/ KafkaLZ4BlockOutputStream

は、ここに私のpom.xml

です
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>com.abcd.rep.xyz</groupId> 
     <artifactId>xyz</artifactId> 
     <version>1.0</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
     <artifactId>SparkPOC</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
     <name>SparkPOCde</name> 
     <url>http://maven.apache.org</url> 
<properties> 

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 


<spark-version>1.6.1</spark-version> 

<kafka-version>0.9.0.0</kafka-version> 

</properties> 


<dependencies> 

<!-- http://mvnrepository.com/artifact/org.springframework/spring-core --> 



<!-- http://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 
<dependency> 

<groupId>log4j</groupId> 

<artifactId>log4j</artifactId> 

<version>1.2.17</version> 

</dependency> 

<!-- http://mvnrepository.com/artifact/org.apache.spark/spark-streaming_2.10 --> 

<dependency> 
<groupId>org.apache.spark</groupId> 

<artifactId>spark-streaming_2.10</artifactId> 

<version>${spark-version}</version> 

</dependency> 

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka_2.10 --> 



<dependency> 

<groupId>org.apache.spark</groupId> 

<artifactId>spark-streaming-kafka_2.10</artifactId> 

<version>1.6.2</version> 

<exclusions> 
     <exclusion> 
      <groupId>io.netty</groupId> 
      <artifactId>netty</artifactId> 
     </exclusion> 

     <exclusion> 
      <groupId>io.jboss.netty</groupId> 
      <artifactId>netty</artifactId> 
     </exclusion> 
    </exclusions> 

</dependency> 

    <dependency> 
      <groupId>com.abcd.rep.xyz</groupId> 
      <artifactId>xyzCommon</artifactId> 
      <version>1.0</version> 
      <type>jar</type> 
     </dependency> 


<!-- http://mvnrepository.com/artifact/ojdbc/ojdbc --> 


<!-- <dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>14</version> </dependency>--> 


<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver --> 




<!-- http://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb --> 




<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple --> 





</dependencies> 


<build> 

<finalName>appname</finalName> 


<resources> 


<resource> 

<directory>src/main/resources</directory> 


<excludes> 

<exclude>eventRules.json</exclude> 

<exclude>log4j.xml</exclude> 

<exclude>resources.properties</exclude> 

</excludes> 

</resource> 

</resources> 


<plugins> 


<plugin> 

<groupId>org.apache.maven.plugins</groupId> 

<artifactId>maven-compiler-plugin</artifactId> 

<version>3.5.1</version> 


<configuration> 

<source>1.8</source> 

<target>1.8</target> 

</configuration> 

</plugin> 


<plugin> 

<groupId>org.apache.maven.plugins</groupId> 

<artifactId>maven-shade-plugin</artifactId> 

<version>2.4.3</version> 


<executions> 


<execution> 

<phase>package</phase> 


<goals> 

<goal>shade</goal> 

</goals> 


<configuration> 


<filters> 


<filter> 

<artifact>*:*</artifact> 


-<excludes> 

<exclude>META-INF/*.SF</exclude> 

<exclude>META-INF/*.DSA</exclude> 

<exclude>META-INF/*.RSA</exclude> 

</excludes> 

</filter> 

</filters> 


<transformers> 


-<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 

<resource>reference.conf</resource> 

</transformer> 


-<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 

<mainClass>com.abcd.rep.xyz.SparkPOCde.EventConsumerServiceImpl</mainClass> 

</transformer> 

</transformers> 

</configuration> 

</execution> 

</executions> 

</plugin> 

</plugins> 

</build> 

</project> 

答えて

4

KafkaLZ4BlockOutputStreamはkafka-clients jarにあります。

カフカ・クライアントのバージョンは0.9.0.0から、それが組織/ apacheの/カフカ/共通/メッセージ/ KafkaLZ4BlockOutputStreamに

ある0.8.2.2ティルそれは

/中/ ORG/apacheの/カフカ/共通/レコードです
+0

ありがとうございました。私は実際にカフカ0.9.0を使用しており、私のストリーミング依存は0.9.0です。なぜ私は0.8.2.2を指しているエラーをゲットしていますか?ディレクトリ??? – AKC

0

バージョン0.8.2.2でkafka jarを使用すると、この問題を解決するのに役立ちます。

1

私のカフカクラスターのバージョンは0.9.0.0ですが、 そして、このようなmaven pomを使って、Spark Streamingでkafkaを処理します。

<dependency> 
<groupId>org.apache.spark</groupId> 
<artifactId>spark-streaming_2.10</artifactId> 
<version>1.6.0</version> 
</dependency> 

ですが、上記のようにエラーが発生します。 それから、私はフォローとして依存を追加しようとすると、それは動作します。

 <dependency> 
     <groupId>org.apache.kafka</groupId> 
     <artifactId>kafka_2.10</artifactId> 
     <version>0.8.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.kafka</groupId> 
     <artifactId>kafka-clients</artifactId> 
     <version>0.8.2.1</version> 
    </dependency> 
+0

yeeeees、kafka-clientsが私のために保存しました – tricky