2016-07-04 5 views
0

私はKinesisでEMRでsparkストリーミングジョブを実行しようとしています。キネシスASL 1.6.1でスパーク1.6.1。プレーンなサンプル数の例を書く。スパークストリーミング1.6.1がKinesis asl 1.6.1およびasl 2.0.0プレビューで動作しません

 <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming-kinesis-asl_2.10</artifactId> 
     <version>1.6.1</version> 
    </dependency> 


    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>amazon-kinesis-client</artifactId> 
     <version>1.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>amazon-kinesis-producer</artifactId> 
     <version>0.10.2</version> 
    </dependency> 

これはorg.apache.spark.streamingで

 <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming-kinesis-asl_2.10</artifactId> 
     <version>2.0.0-preview</version> 
    </dependency> 

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: com/google/protobuf/ProtocolStringList 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardConsumer.checkAndSubmitNextTask(ShardConsumer.java:157) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardConsumer.consumeShard(ShardConsumer.java:126) 

のアップグレードに2.0.0-プレビュー例外与える以下の例外

java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging 

次スローキネシス。キネシス

:私のようないくつかの場所で述べたように、非常によく似た問題を抱えている

答えて

1

を:$$ anonfun $ createStream $ 1.apply(74 KinesisUtils.scalaに)のTIL AWS EMRでSpark Streamingアプリケーションを実行しようとすると、次の結果が表示されます。

java.lang.NoSuchMethodError: com.google.protobuf.LazyStringList.getUnmodifiableView()Lcom/google/protobuf/LazyStringList; 

getUnmodifiableView()はprotobufのいくつかのバージョンでは利用できませんので、まだprotobufのバージョンが間違っています。 依存関係のバージョンをいくつか組み合わせてみましたが、それでも同じです。すべてが私の開発マシン上でローカルで正常に動作しますが、マスターノードでアプリケーションを送信しようとすると、このエラーが発生します。 私のポンポンファイルの最後に試したバージョンは次のとおりです。

<dependencies> 
    <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java --> 
    <dependency> 
     <groupId>com.google.protobuf</groupId> 
     <artifactId>protobuf-java</artifactId> 
     <version>2.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>amazon-kinesis-client</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 --> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>2.1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java --> 



    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-client</artifactId> 
     <version>2.7.3</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.10 --> 
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.10 --> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-mllib_2.10</artifactId> 
     <version>2.1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-sql_2.10</artifactId> 
     <version>2.1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive_2.10 --> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-hive_2.10</artifactId> 
     <version>2.1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kinesis-asl_2.11 --> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming-kinesis-asl_2.11</artifactId> 
     <version>2.0.0</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws --> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-aws</artifactId> 
     <version>2.7.3</version> 
     <scope>provided</scope> 
    </dependency> 


    <!--https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk--> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk</artifactId> 
     <version>1.10.77</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jackson-core</artifactId> 
       <groupId>com.fasterxml.jackson.core</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>jackson-databind</artifactId> 
       <groupId>com.fasterxml.jackson.core</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>jackson-annotations</artifactId> 
       <groupId>com.fasterxml.jackson.core</groupId> 
      </exclusion> 
     </exclusions> 
     <scope>provided</scope> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.6.7</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.6.7</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.6.7</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/net.java.dev.jets3t/jets3t --> 
    <dependency> 
     <groupId>net.java.dev.jets3t</groupId> 
     <artifactId>jets3t</artifactId> 
     <version>0.9.4</version> 
    </dependency> 

</dependencies> 
0

それがいるProtobuf-javaの依存関係の競合によって引き起こされました。 mvn dependency:treeを使用して、KCLとKPLが依存するprotobuf-javaのバージョンを確認します。そしてlibディレクトリにスパークすると、別のバージョンが見つかるはずです。 はのmaven-シェードプラグインを使用して、競合クラスを再配置してください:

<plugin> 
 
    <groupId>org.apache.maven.plugins</groupId> 
 
    <artifactId>maven-shade-plugin</artifactId> 
 
    <version>2.3</version> 
 
    <executions> 
 
     <execution> 
 
      <phase>package</phase> 
 
      <goals> 
 
       <goal>shade</goal> 
 
      </goals> 
 
      <configuration> 
 
       <outputFile> 
 
        ${project.build.directory}/${project.artifactId}-${project.version}-selfcontained.jar 
 
       </outputFile> 
 
       <relocations> 
 
        <relocation> 
 
         <pattern>com.google.protobuf</pattern> 
 
         <shadedPattern>shade.com.google.protobuf</shadedPattern> 
 
        </relocation> 
 
        <relocation> 
 
         <pattern>com.amazonaws</pattern> 
 
         <shadedPattern>shade.com.amazonaws</shadedPattern> 
 
        </relocation> 
 
       </relocations> 
 
       <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.ServicesResourceTransformer" /> 
 
       </transformers> 
 
      </configuration> 
 
     </execution> 
 
    </executions> 
 
</plugin>

関連する問題