Here are my findings.
If you could explain why I'm seeing these behaviors, that'll be great.

A. I have to specify BOTH jars and spark.jars
I have to have jars locally in the Livy server AND same jars in HDFS.
For example, {"jars": ["/tmp/myLib0.jar,/tmp/myUber.jar"], "conf":
{"spark.jars":
"/tmp/myLib0.jar,/tmp/myUber.jar","spark.files.overwrite":"true"}}

Why do I need to specify both "jars" and "spark.jars"? Is this as designed?

B. error: not found: value Source
'myUber.jar' contains 'Source' class. When {"jars": ["/tmp/myUber.jar"],
"conf": {"spark.jars": "/tmp/myUber.jar","spark.files.overwrite":"true"}}
is used, it doesn't see 'Source' class. Notice only 'myUber.jar' is
included.

I had to supply the original library jar that contains 'Source' class in
addition to 'myUber.jar' as follows.
{"jars": ["/tmp/myLib0.jar,/tmp/myUber.jar"], "conf": {"spark.jars":
"/tmp/myLib0.jar,/tmp/myUber.jar","spark.files.overwrite":"true"}}
So, 'Source' class exists in 'myLib0.jar' and 'myUber.jar'.

I also tried {"jars": ["/tmp/myLib0.jar,/tmp/myApp.jar"], "conf":
{"spark.jars":
"/tmp/myLib0.jar,/tmp/myApp.jar","spark.files.overwrite":"true"}}
In this case, 'Source' only exists in 'myLib0.jar'. But the same error pops
up.

Why 'Source' has be to be repeated through multiple jars?

Thanks,
Q

Reply via email to