title: When to use SPARK_CLASSPATH or SparkContext.addJar
body: <p>I'm using a standalone spark cluster, one master and 2 workers.
  I really don't understand how to use wisely SPARK_CLASSPATH or SparkContext.addJar. I tried both and It looks like addJar doesn't work as I used to believe.</p>
  
  <p>In my case I tried to use some joda-time function, in the closures or outside. If I set SPARK_CLASSPATH with a path to the joda-time jar, everything works ok. But if I remove SPARK_CLASSPATH and add in my program:</p>
  
  <pre><code>JavaSparkContext sc = new JavaSparkContext("spark://localhost:7077", "name", "path-to-spark-home", "path-to-the-job-jar");
  sc.addJar("path-to-joda-jar");
  </code></pre>
  
  <p>It doesn't work anymore, although in logs I can see:</p>
  
  <pre><code>14/03/17 15:32:57 INFO SparkContext: Added JAR /home/hduser/projects/joda-time-2.1.jar at http://127.0.0.1:46388/jars/joda-time-2.1.jar with timestamp 1395066777041
  </code></pre>
  
  <p>and immediatly after:</p>
  
  <pre><code>Caused by: java.lang.NoClassDefFoundError: org/joda/time/DateTime
      at com.xxx.sparkjava1.SimpleApp.main(SimpleApp.java:57)
      ... 6 more
  Caused by: java.lang.ClassNotFoundException: org.joda.time.DateTime
      at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  </code></pre>
  
  <p>I used to suppose that SPARK_CLASSPATH was setting the classpath for the driver part of the job, and SparkContext.addJar was setting the classpath for the executors, but It does not seem right anymore.</p>
  
  <p>Anyone knows better than me?</p>