spark-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sachin Mittal <sjmit...@gmail.com>
Subject Re: Building standalone spark application via sbt
Date Wed, 20 Jul 2016 18:00:37 GMT
I got the error during run time. It was for mongo-spark-connector class
files.
My build.sbt is like this

name := "Test Advice Project"
version := "1.0"
scalaVersion := "2.10.6"
libraryDependencies ++= Seq(
    "org.mongodb.spark" %% "mongo-spark-connector" % "1.0.0",
    "org.apache.spark" %% "spark-core" % "1.6.1" % "provided",
    "org.apache.spark" %% "spark-sql" % "1.6.1" % "provided"
)

assemblyMergeStrategy in assembly := {
   case PathList("META-INF", xs @ _*) => MergeStrategy.discard
   case x => MergeStrategy.first
}

and I create the fat jar using sbt assembly
I have also added addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
in ~/.sbt/0.13/plugins/plugins.sbt for sbt assembly to work.

I think when you use provided it does not include those jars in your fat
jar.

I am using spark 1.6

Thanks
Sachin



On Wed, Jul 20, 2016 at 11:23 PM, Marco Mistroni <mmistroni@gmail.com>
wrote:

>  that will work but ideally you should not include any of the
> spark-releated jars as they are provided to you by the spark environment
> whenever you launch your app via spark-submit (this will prevent unexpected
> errors e.g. when you kick off your app using a different version of spark
> where some of the classes has been renamd or movedaround -tbh i don't think
> this is a case that happen often)
>
> Btw did you get the NoClassDefFoundException at compile time or run
> time?if at run time, what is your Spark Version  and what is the spark
> libraries version you used in your sbt?
> are you using a Spark version pre 1.4?
>
> kr
>  marco
>
>
>
>
>
>
> On Wed, Jul 20, 2016 at 6:13 PM, Sachin Mittal <sjmittal@gmail.com> wrote:
>
>> NoClassDefFound error was for spark classes like say SparkConext.
>> When running a standalone spark application I was not passing external
>> jars using --jars option.
>>
>> However I have fixed this by making a fat jar using sbt assembly plugin.
>>
>> Now all the dependencies are included in that jar and I use that jar in
>> spark-submit
>>
>> Thanks
>> Sachin
>>
>>
>> On Wed, Jul 20, 2016 at 9:42 PM, Marco Mistroni <mmistroni@gmail.com>
>> wrote:
>>
>>> Hello Sachin
>>>   pls paste the NoClassDefFound Exception so we can see what's failing,
>>> aslo please advise how are you running your Spark App
>>> For an extremely simple case, let's assume  you have your
>>> MyFirstSparkApp packaged in your   myFirstSparkApp.jar
>>> Then all you need to do would be to kick off
>>>
>>> spark-submit --class MyFirstSparkApp   myFirstSparkApp.jar
>>>
>>> if you have any external dependencies (not spark , let's assume you are
>>> using common-utils.jar) then you should be able to kick it off via
>>>
>>> spark-submit --class MyFirstSparkApp --jars common-utiils.jar
>>> myFirstSparkApp.jar
>>>
>>> I paste below the build.sbt i am using for my SparkExamples apps, hope
>>> this helps.
>>> kr
>>>  marco
>>>
>>> name := "SparkExamples"
>>>
>>> version := "1.0"
>>>
>>> scalaVersion := "2.10.5"
>>>
>>>
>>> // Add a single dependency
>>> libraryDependencies += "junit" % "junit" % "4.8" % "test"
>>> libraryDependencies += "org.mockito" % "mockito-core" % "1.9.5"
>>> libraryDependencies ++= Seq("org.slf4j" % "slf4j-api" % "1.7.5",
>>>                             "org.slf4j" % "slf4j-simple" % "1.7.5",
>>>                             "org.clapper" %% "grizzled-slf4j" % "1.0.2")
>>> libraryDependencies += "org.powermock" %
>>> "powermock-mockito-release-full" % "1.5.4" % "test"
>>> libraryDependencies += "org.apache.spark" %% "spark-core"   % "1.6.1" %
>>> "provided"
>>> libraryDependencies += "org.apache.spark" %% "spark-streaming"   %
>>> "1.6.1" % "provided"
>>> libraryDependencies += "org.apache.spark" %% "spark-mllib"   % "1.6.1"
>>> % "provided"
>>> libraryDependencies += "org.apache.spark" %% "spark-streaming-flume"   %
>>> "1.3.0"  % "provided"
>>> resolvers += "softprops-maven" at "
>>> http://dl.bintray.com/content/softprops/maven"
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Jul 20, 2016 at 3:39 PM, Mich Talebzadeh <
>>> mich.talebzadeh@gmail.com> wrote:
>>>
>>>> you need an uber jar file.
>>>>
>>>> Have you actually followed the dependencies and project sub-directory
>>>> build?
>>>>
>>>> check this.
>>>>
>>>>
>>>> http://stackoverflow.com/questions/28459333/how-to-build-an-uber-jar-fat-jar-using-sbt-within-intellij-idea
>>>>
>>>> under three answers the top one.
>>>>
>>>> I started reading the official SBT tutorial
>>>> <http://www.scala-sbt.org/0.13/tutorial/>.  .....
>>>>
>>>> HTH
>>>>
>>>> Dr Mich Talebzadeh
>>>>
>>>>
>>>>
>>>> LinkedIn * https://www.linkedin.com/profile/view?id=AAEAAAAWh2gBxianrbJd6zP6AcPCCdOABUrV8Pw
>>>> <https://www.linkedin.com/profile/view?id=AAEAAAAWh2gBxianrbJd6zP6AcPCCdOABUrV8Pw>*
>>>>
>>>>
>>>>
>>>> http://talebzadehmich.wordpress.com
>>>>
>>>>
>>>> *Disclaimer:* Use it at your own risk. Any and all responsibility for
>>>> any loss, damage or destruction of data or any other property which may
>>>> arise from relying on this email's technical content is explicitly
>>>> disclaimed. The author will in no case be liable for any monetary damages
>>>> arising from such loss, damage or destruction.
>>>>
>>>>
>>>>
>>>> On 20 July 2016 at 09:54, Sachin Mittal <sjmittal@gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>> I am following the example under
>>>>> https://spark.apache.org/docs/latest/quick-start.html
>>>>> For standalone scala application.
>>>>>
>>>>> I added all my dependencies via build.sbt (one dependency is under lib
>>>>> folder).
>>>>>
>>>>> When I run sbt package I see the jar created under
>>>>> target/scala-2.10/
>>>>>
>>>>> So compile seems to be working fine. However when I inspect that jar,
>>>>> it only contains my scala class.
>>>>> Unlike in java application we build a standalone jar, which contains
>>>>> all the dependencies inside that jar, here all the dependencies are missing.
>>>>>
>>>>> So as expected when I run the application via spark-submit I get the
>>>>> NoClassDefFoundError.
>>>>>
>>>>> Here is my build.sbt
>>>>>
>>>>> name := "Test Advice Project"
>>>>> version := "1.0"
>>>>> scalaVersion := "2.10.6"
>>>>> libraryDependencies ++= Seq(
>>>>>     "org.apache.spark" %% "spark-core" % "1.6.1",
>>>>>     "org.apache.spark" %% "spark-sql" % "1.6.1"
>>>>> )
>>>>>
>>>>> Can anyone please guide me to as what is going wrong and why sbt
>>>>> package is not including all the dependencies jar classes in the new
jar.
>>>>>
>>>>> Thanks
>>>>> Sachin
>>>>>
>>>>>
>>>>> On Tue, Jul 19, 2016 at 8:23 PM, Andrew Ehrlich <andrew@aehrlich.com>
>>>>> wrote:
>>>>>
>>>>>> Yes, spark-core will depend on Hadoop and several other jars.  Here’s
>>>>>> the list of dependencies:
>>>>>> https://github.com/apache/spark/blob/master/core/pom.xml#L35
>>>>>>
>>>>>> Whether you need spark-sql depends on whether you will use the
>>>>>> DataFrame API. Without spark-sql, you will just have the RDD API.
>>>>>>
>>>>>> On Jul 19, 2016, at 7:09 AM, Sachin Mittal <sjmittal@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>> Can someone please guide me what all jars I need to place in my lib
>>>>>> folder of the project to build a standalone scala application via
sbt.
>>>>>>
>>>>>> Note I need to provide static dependencies and I cannot download
the
>>>>>> jars using libraryDependencies.
>>>>>> So I need to provide all the jars upfront.
>>>>>>
>>>>>> So far I found that we need:
>>>>>> spark-core_<version>.jar
>>>>>>
>>>>>> Do we also need
>>>>>> spark-sql_<version>.jar
>>>>>> and
>>>>>> hadoop-core-<version>.jar
>>>>>>
>>>>>> Is there any jar from spark side I may be missing? What I found that
>>>>>> spark-core needs hadoop-core classes and if I don't add them then
sbt was
>>>>>> giving me this error:
>>>>>> [error] bad symbolic reference. A signature in SparkContext.class
>>>>>> refers to term hadoop
>>>>>> [error] in package org.apache which is not available.
>>>>>>
>>>>>> So I was just confused on library dependency part when building an
>>>>>> application via sbt. Any inputs here would be helpful.
>>>>>>
>>>>>> Thanks
>>>>>> Sachin
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message