Either whitespace or equals sign are valid properties file formats. Here's an example:
$ cat conf/spark-defaults.conf spark.driver.extraJavaOptions -Dfoo.bar.baz=23 $ ./bin/spark-shell -v Using properties file: /opt/spark/conf/spark-defaults.conf Adding default property: spark.driver.extraJavaOptions=-Dfoo.bar.baz=23 scala> System.getProperty("foo.bar.baz") res0: String = null If you add double quotes, the resulting string value will have double quotes. $ cat conf/spark-defaults.conf spark.driver.extraJavaOptions "-Dfoo.bar.baz=23" $ ./bin/spark-shell -v Using properties file: /opt/spark/conf/spark-defaults.conf Adding default property: spark.driver.extraJavaOptions="-Dfoo.bar.baz=23" scala> System.getProperty("foo.bar.baz") res0: String = null Neither one of those affects the issue; the underlying problem in my case seems to be that bin/spark-class uses the SPARK_SUBMIT_OPTS and SPARK_JAVA_OPTS environment variables, but nothing parses spark-defaults.conf before the java process is started. Here's an example of the process running when only spark-defaults.conf is being used: $ ps -ef | grep spark 514 5182 2058 0 21:05 pts/2 00:00:00 bash ./bin/spark-shell -v 514 5189 5182 4 21:05 pts/2 00:00:22 /usr/local/java/bin/java -cp ::/opt/spark/conf:/opt/spark/lib/spark-assembly-1.0.1-hadoop2.3.0-mr1-cdh5.0.2.jar:/etc/hadoop/conf-mx -XX:MaxPermSize=128m -Djava.library.path= -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit spark-shell -v --class org.apache.spark.repl.Main Here's an example of it when the command line --driver-java-options is used (and thus things work): $ ps -ef | grep spark 514 5392 2058 0 21:15 pts/2 00:00:00 bash ./bin/spark-shell -v --driver-java-options -Dfoo.bar.baz=23 514 5399 5392 80 21:15 pts/2 00:00:06 /usr/local/java/bin/java -cp ::/opt/spark/conf:/opt/spark/lib/spark-assembly-1.0.1-hadoop2.3.0-mr1-cdh5.0.2.jar:/etc/hadoop/conf-mx -XX:MaxPermSize=128m -Dfoo.bar.baz=23 -Djava.library.path= -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit spark-shell -v --driver-java-options -Dfoo.bar.baz=23 --class org.apache.spark.repl.Main On Wed, Jul 30, 2014 at 3:43 PM, Patrick Wendell <pwend...@gmail.com> wrote: > Cody - in your example you are using the '=' character, but in our > documentation and tests we use a whitespace to separate the key and > value in the defaults file. > > docs: http://spark.apache.org/docs/latest/configuration.html > > spark.driver.extraJavaOptions -Dfoo.bar.baz=23 > > I'm not sure if the java properties file parser will try to interpret > the equals sign. If so you might need to do this. > > spark.driver.extraJavaOptions "-Dfoo.bar.baz=23" > > Do those work for you? > > On Wed, Jul 30, 2014 at 1:32 PM, Marcelo Vanzin <van...@cloudera.com> > wrote: > > Hi Cody, > > > > Could you file a bug for this if there isn't one already? > > > > For system properties SparkSubmit should be able to read those > > settings and do the right thing, but that obviously won't work for > > other JVM options... the current code should work fine in cluster mode > > though, since the driver is a different process. :-) > > > > > > On Wed, Jul 30, 2014 at 1:12 PM, Cody Koeninger <c...@koeninger.org> > wrote: > >> We were previously using SPARK_JAVA_OPTS to set java system properties > via > >> -D. > >> > >> This was used for properties that varied on a per-deployment-environment > >> basis, but needed to be available in the spark shell and workers. > >> > >> On upgrading to 1.0, we saw that SPARK_JAVA_OPTS had been deprecated, > and > >> replaced by spark-defaults.conf and command line arguments to > spark-submit > >> or spark-shell. > >> > >> However, setting spark.driver.extraJavaOptions and > >> spark.executor.extraJavaOptions in spark-defaults.conf is not a > replacement > >> for SPARK_JAVA_OPTS: > >> > >> > >> $ cat conf/spark-defaults.conf > >> spark.driver.extraJavaOptions=-Dfoo.bar.baz=23 > >> > >> $ ./bin/spark-shell > >> > >> scala> System.getProperty("foo.bar.baz") > >> res0: String = null > >> > >> > >> $ ./bin/spark-shell --driver-java-options "-Dfoo.bar.baz=23" > >> > >> scala> System.getProperty("foo.bar.baz") > >> res0: String = 23 > >> > >> > >> Looking through the shell scripts for spark-submit and spark-class, I > can > >> see why this is; parsing spark-defaults.conf from bash could be brittle. > >> > >> But from an ergonomic point of view, it's a step back to go from a > >> set-it-and-forget-it configuration in spark-env.sh, to requiring command > >> line arguments. > >> > >> I can solve this with an ad-hoc script to wrap spark-shell with the > >> appropriate arguments, but I wanted to bring the issue up to see if > anyone > >> else had run into it, > >> or had any direction for a general solution (beyond parsing java > properties > >> files from bash). > > > > > > > > -- > > Marcelo >