[ 
https://issues.apache.org/jira/browse/SPARK-45255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Faiz Halde updated SPARK-45255:
-------------------------------
    Description: 
I have a very simple repo with the following dependency in `build.sbt`

```

{{libraryDependencies ++= Seq("org.apache.spark" %% "spark-connect-client-jvm" 
% "3.5.0")}}

```

A simple application

```

{{object Main extends App {}}
{{   val s = SparkSession.builder().remote("sc://localhost").getOrCreate()}}
{{   s.read.json("/tmp/input.json").repartition(10).show(false)}}
{{}}}

```

But when I run it, I get the following error

 

```

{{Exception in thread "main" java.lang.NoClassDefFoundError: 
org/sparkproject/connect/client/com/google/common/cache/CacheLoader}}
{{    at Main$.delayedEndpoint$Main$1(Main.scala:4)}}
{{    at Main$delayedInit$body.apply(Main.scala:3)}}
{{    at scala.Function0.apply$mcV$sp(Function0.scala:39)}}
{{    at scala.Function0.apply$mcV$sp$(Function0.scala:39)}}
{{    at 
scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)}}
{{    at scala.App.$anonfun$main$1$adapted(App.scala:80)}}
{{    at scala.collection.immutable.List.foreach(List.scala:431)}}
{{    at scala.App.main(App.scala:80)}}
{{    at scala.App.main$(App.scala:78)}}
{{    at Main$.main(Main.scala:3)}}
{{    at Main.main(Main.scala)}}
{{Caused by: java.lang.ClassNotFoundException: 
org.sparkproject.connect.client.com.google.common.cache.CacheLoader}}
{{    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)}}
{{    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)}}
{{    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)}}
{{    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)}}
{{    ... 11 more}}

```

I know the connect does a bunch of shading during assembly so it could be 
related to that. This application is not started via spark-submit or anything. 
It's not run neither under a `SPARK_HOME` ( I guess that's the whole point of 
connect client )

 

I followed the doc exactly as described. Can somebody help?

BTW it did work if I copied the exact shading rules in my project but I wonder 
if that's the right thing to do?

  was:
I have a very simple repo with the following dependency in `build.sbt`

```

{{libraryDependencies ++= Seq("org.apache.spark" %% "spark-connect-client-jvm" 
% "3.5.0")}}

```

A simple application

```

{{object Main extends App {}}
{{   val s = SparkSession.builder().remote("sc://localhost").getOrCreate()}}
{{   s.read.json("/tmp/input.json").repartition(10).show(false)}}
{{}}}

```

But when I run it, I get the following error

 

```

{{Exception in thread "main" java.lang.NoClassDefFoundError: 
org/sparkproject/connect/client/com/google/common/cache/CacheLoader}}
{{    at Main$.delayedEndpoint$Main$1(Main.scala:4)}}
{{    at Main$delayedInit$body.apply(Main.scala:3)}}
{{    at scala.Function0.apply$mcV$sp(Function0.scala:39)}}
{{    at scala.Function0.apply$mcV$sp$(Function0.scala:39)}}
{{    at 
scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)}}
{{    at scala.App.$anonfun$main$1$adapted(App.scala:80)}}
{{    at scala.collection.immutable.List.foreach(List.scala:431)}}
{{    at scala.App.main(App.scala:80)}}
{{    at scala.App.main$(App.scala:78)}}
{{    at Main$.main(Main.scala:3)}}
{{    at Main.main(Main.scala)}}
{{Caused by: java.lang.ClassNotFoundException: 
org.sparkproject.connect.client.com.google.common.cache.CacheLoader}}
{{    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)}}
{{    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)}}
{{    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)}}
{{    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)}}
{{    ... 11 more}}

```

I know the connect does a bunch of shading during assembly so it could be 
related to that. This application is not started via spark-submit or anything. 
Neither under `SPARK_HOME` ( I guess that's the whole point of connect client )

 

I followed the doc exactly as described. Can somebody help?

BTW it did work if I copied the exact shading rules in my project but I wonder 
if that's the right thing to do?


> Spark connect client failing with java.lang.NoClassDefFoundError
> ----------------------------------------------------------------
>
>                 Key: SPARK-45255
>                 URL: https://issues.apache.org/jira/browse/SPARK-45255
>             Project: Spark
>          Issue Type: New Feature
>          Components: Connect
>    Affects Versions: 3.5.0
>            Reporter: Faiz Halde
>            Priority: Major
>
> I have a very simple repo with the following dependency in `build.sbt`
> ```
> {{libraryDependencies ++= Seq("org.apache.spark" %% 
> "spark-connect-client-jvm" % "3.5.0")}}
> ```
> A simple application
> ```
> {{object Main extends App {}}
> {{   val s = SparkSession.builder().remote("sc://localhost").getOrCreate()}}
> {{   s.read.json("/tmp/input.json").repartition(10).show(false)}}
> {{}}}
> ```
> But when I run it, I get the following error
>  
> ```
> {{Exception in thread "main" java.lang.NoClassDefFoundError: 
> org/sparkproject/connect/client/com/google/common/cache/CacheLoader}}
> {{    at Main$.delayedEndpoint$Main$1(Main.scala:4)}}
> {{    at Main$delayedInit$body.apply(Main.scala:3)}}
> {{    at scala.Function0.apply$mcV$sp(Function0.scala:39)}}
> {{    at scala.Function0.apply$mcV$sp$(Function0.scala:39)}}
> {{    at 
> scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)}}
> {{    at scala.App.$anonfun$main$1$adapted(App.scala:80)}}
> {{    at scala.collection.immutable.List.foreach(List.scala:431)}}
> {{    at scala.App.main(App.scala:80)}}
> {{    at scala.App.main$(App.scala:78)}}
> {{    at Main$.main(Main.scala:3)}}
> {{    at Main.main(Main.scala)}}
> {{Caused by: java.lang.ClassNotFoundException: 
> org.sparkproject.connect.client.com.google.common.cache.CacheLoader}}
> {{    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)}}
> {{    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)}}
> {{    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)}}
> {{    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)}}
> {{    ... 11 more}}
> ```
> I know the connect does a bunch of shading during assembly so it could be 
> related to that. This application is not started via spark-submit or 
> anything. It's not run neither under a `SPARK_HOME` ( I guess that's the 
> whole point of connect client )
>  
> I followed the doc exactly as described. Can somebody help?
> BTW it did work if I copied the exact shading rules in my project but I 
> wonder if that's the right thing to do?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to