Just remove "provided" for spark-streaming-kinesis-asl libraryDependencies += "org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.3.0"
On Fri, Apr 3, 2015 at 12:45 PM, Vadim Bichutskiy < vadim.bichuts...@gmail.com> wrote: > Thanks. So how do I fix it? > ᐧ > > On Fri, Apr 3, 2015 at 3:43 PM, Kelly, Jonathan <jonat...@amazon.com> > wrote: > >> spark-streaming-kinesis-asl is not part of the Spark distribution on >> your cluster, so you cannot have it be just a "provided" dependency. This >> is also why the KCL and its dependencies were not included in the assembly >> (but yes, they should be). >> >> >> ~ Jonathan Kelly >> >> From: Vadim Bichutskiy <vadim.bichuts...@gmail.com> >> Date: Friday, April 3, 2015 at 12:26 PM >> To: Jonathan Kelly <jonat...@amazon.com> >> Cc: "user@spark.apache.org" <user@spark.apache.org> >> Subject: Re: Spark + Kinesis >> >> Hi all, >> >> Good news! I was able to create a Kinesis consumer and assemble it into >> an "uber jar" following >> http://spark.apache.org/docs/latest/streaming-kinesis-integration.html >> and example >> https://github.com/apache/spark/blob/master/extras/kinesis-asl/src/main/scala/org/apache/spark/examples/streaming/KinesisWordCountASL.scala >> . >> >> However when I try to spark-submit it I get the following exception: >> >> *Exception in thread "main" java.lang.NoClassDefFoundError: >> com/amazonaws/auth/AWSCredentialsProvider* >> >> Do I need to include KCL dependency in *build.sbt*, here's what it >> looks like currently: >> >> import AssemblyKeys._ >> name := "Kinesis Consumer" >> version := "1.0" >> organization := "com.myconsumer" >> scalaVersion := "2.11.5" >> >> libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.0" % >> "provided" >> libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.3.0" >> % "provided" >> libraryDependencies += "org.apache.spark" %% >> "spark-streaming-kinesis-asl" % "1.3.0" % "provided" >> >> assemblySettings >> jarName in assembly := "consumer-assembly.jar" >> assemblyOption in assembly := (assemblyOption in >> assembly).value.copy(includeScala=false) >> >> Any help appreciated. >> >> Thanks, >> Vadim >> >> On Thu, Apr 2, 2015 at 1:15 PM, Kelly, Jonathan <jonat...@amazon.com> >> wrote: >> >>> It looks like you're attempting to mix Scala versions, so that's going >>> to cause some problems. If you really want to use Scala 2.11.5, you must >>> also use Spark package versions built for Scala 2.11 rather than 2.10. >>> Anyway, that's not quite the correct way to specify Scala dependencies in >>> build.sbt. Instead of placing the Scala version after the artifactId (like >>> "spark-core_2.10"), what you actually want is to use just "spark-core" with >>> two percent signs before it. Using two percent signs will make it use the >>> version of Scala that matches your declared scalaVersion. For example: >>> >>> libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.0" % >>> "provided" >>> >>> libraryDependencies += "org.apache.spark" %% "spark-streaming" % >>> "1.3.0" % "provided" >>> >>> libraryDependencies += "org.apache.spark" %% >>> "spark-streaming-kinesis-asl" % "1.3.0" >>> >>> I think that may get you a little closer, though I think you're >>> probably going to run into the same problems I ran into in this thread: >>> https://www.mail-archive.com/user@spark.apache.org/msg23891.html I >>> never really got an answer for that, and I temporarily moved on to other >>> things for now. >>> >>> >>> ~ Jonathan Kelly >>> >>> From: 'Vadim Bichutskiy' <vadim.bichuts...@gmail.com> >>> Date: Thursday, April 2, 2015 at 9:53 AM >>> To: "user@spark.apache.org" <user@spark.apache.org> >>> Subject: Spark + Kinesis >>> >>> Hi all, >>> >>> I am trying to write an Amazon Kinesis consumer Scala app that >>> processes data in the >>> Kinesis stream. Is this the correct way to specify *build.sbt*: >>> >>> ------- >>> *import AssemblyKeys._* >>> *name := "Kinesis Consumer"* >>> >>> >>> >>> >>> >>> >>> *version := "1.0" organization := "com.myconsumer" scalaVersion := >>> "2.11.5" libraryDependencies ++= Seq("org.apache.spark" % "spark-core_2.10" >>> % "1.3.0" % "provided", "org.apache.spark" % "spark-streaming_2.10" % >>> "1.3.0" "org.apache.spark" % "spark-streaming-kinesis-asl_2.10" % "1.3.0")* >>> >>> >>> >>> * assemblySettings jarName in assembly := "consumer-assembly.jar" >>> assemblyOption in assembly := (assemblyOption in >>> assembly).value.copy(includeScala=false)* >>> -------- >>> >>> In *project/assembly.sbt* I have only the following line: >>> >>> *addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")* >>> >>> I am using sbt 0.13.7. I adapted Example 7.7 in the Learning Spark >>> book. >>> >>> Thanks, >>> Vadim >>> >>> >> >