Hi Wenchen,

Looks like it didn't work in 3.5 either.

❯ ./bin/spark-shell --version
25/04/28 20:37:48 WARN Utils: Your hostname, Jaceks-Mac-mini.local resolves
to a loopback address: 127.0.0.1; using 192.168.68.100 instead (on
interface en1)
25/04/28 20:37:48 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
another address
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.5.5
      /_/

Using Scala version 2.12.18, OpenJDK 64-Bit Server VM, 17.0.15
Branch HEAD
Compiled by user ubuntu on 2025-02-23T20:30:46Z
Revision 7c29c664cdc9321205a98a14858aaf8daaa19db2
Url https://github.com/apache/spark
Type --help for more information.

❯ ./bin/spark-shell --conf spark.jars.ivy=~/.ivy2
25/04/28 20:37:54 WARN Utils: Your hostname, Jaceks-Mac-mini.local resolves
to a loopback address: 127.0.0.1; using 192.168.68.100 instead (on
interface en1)
25/04/28 20:37:54 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
another address
Exception in thread "main" java.lang.IllegalArgumentException: basedir must
be absolute: ~/.ivy2/local
at org.apache.ivy.util.Checks.checkAbsolute(Checks.java:48)
at
org.apache.ivy.plugins.repository.file.FileRepository.setBaseDir(FileRepository.java:137)
at
org.apache.ivy.plugins.repository.file.FileRepository.<init>(FileRepository.java:44)
at
org.apache.spark.deploy.SparkSubmitUtils$.createRepoResolvers(SparkSubmit.scala:1274)
at
org.apache.spark.deploy.SparkSubmitUtils$.buildIvySettings(SparkSubmit.scala:1381)
at
org.apache.spark.util.DependencyUtils$.resolveMavenDependencies(DependencyUtils.scala:182)
at
org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:339)
at org.apache.spark.deploy.SparkSubmit.org
$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:969)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:199)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:222)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:91)
at
org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1125)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1134)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

We should change the wording in the migration guide and fix it (at least
report it as an issue). I can do both if allowed :wink:

Pozdrawiam,
Jacek Laskowski
----
"The Internals Of" Online Books <https://books.japila.pl/>
Follow me on Bluesky <https://bsky.app/profile/books.japila.pl>

<https://twitter.com/jaceklaskowski>


On Mon, Apr 28, 2025 at 5:04 AM Wenchen Fan <cloud0...@gmail.com> wrote:

> Hi Jacek,
>
> Thanks for reporting the issue! Did you hit the same problem when you set
> the `spark.jars.ivy` config with Spark 3.5? If this config never worked
> with a relative path, we should change the wording in the migration guide.
>
> Thanks,
> Wenchen
>
> On Sun, Apr 27, 2025 at 10:27 PM Jacek Laskowski <ja...@japila.pl> wrote:
>
>> Hi,
>>
>> I found in docs/core-migration-guide.md:
>>
>> - Since Spark 4.0, Spark uses `~/.ivy2.5.2` as Ivy user directory by
>> default to isolate the existing systems from Apache Ivy's incompatibility.
>> To restore the legacy behavior, you can set `spark.jars.ivy` to `~/.ivy2`.
>>
>> With that, I used spark.jars.ivy to run spark-shell with ~/.ivy2
>> directory for local dependencies.
>>
>> bin/spark-sql --conf spark.jars.ivy=~/.ivy2
>>
>> This ended up with the following issue:
>>
>> Exception in thread "main" java.lang.IllegalArgumentException: basedir
>> must be absolute: ~/.ivy2/local
>> at org.apache.ivy.util.Checks.checkAbsolute(Checks.java:48)
>> at
>> org.apache.ivy.plugins.repository.file.FileRepository.setBaseDir(FileRepository.java:137)
>> at
>> org.apache.ivy.plugins.repository.file.FileRepository.<init>(FileRepository.java:44)
>> at
>> org.apache.spark.util.MavenUtils$.createRepoResolvers(MavenUtils.scala:159)
>> at
>> org.apache.spark.util.MavenUtils$.buildIvySettings(MavenUtils.scala:287)
>> at
>> org.apache.spark.util.DependencyUtils$.resolveMavenDependencies(DependencyUtils.scala:118)
>> at
>> org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:341)
>> at org.apache.spark.deploy.SparkSubmit.org
>> $apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:961)
>> at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:204)
>> at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:227)
>> at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:96)
>> at
>> org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1132)
>> at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1141)
>> at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
>>
>> A workaround is to use an absolute path.
>>
>> Is this a known issue? Should I report it against rc4? Please guide.
>> Thanks!
>>
>> Pozdrawiam,
>> Jacek Laskowski
>> ----
>> "The Internals Of" Online Books <https://books.japila.pl/>
>> Follow me on Bluesky <https://bsky.app/profile/books.japila.pl>
>>
>> <https://twitter.com/jaceklaskowski>
>>
>

Reply via email to