我試圖用Kinesis在EMR上運行Spark流作業。 Spark 1.6.1和Kinesis ASL 1.6.1。編寫一個簡單的示例wordcount示例。Spark Streaming 1.6.1不適用於Kinesis asl 1.6.1和asl 2.0.0-preview
<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例外
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預覽
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kinesis-asl_2.10</artifactId>
<version>2.0.0-preview</version>
</dependency>
給出以下異常
java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
.kinesis.KinesisU腫瘤浸潤淋巴細胞$$ anonfun $ createStream $ 1.適用(KinesisUtils.scala:74)