Apache spark 何时使用SPARK_类路径或SparkContext.addJar
我使用一个独立的spark群集,一个主群集和两个辅助群集。 我真的不明白如何明智地使用SPARK_CLASSPATH或SparkContext.addJar。我两个都试过了,看起来addJar不像我以前认为的那样工作了 在我的例子中,我尝试在闭包或外部使用一些joda时间函数。如果我将SPARK_类路径设置为joda时间罐的路径,则一切正常。但是如果我删除SPARK_类路径并添加到我的程序中:Apache spark 何时使用SPARK_类路径或SparkContext.addJar,apache-spark,Apache Spark,我使用一个独立的spark群集,一个主群集和两个辅助群集。 我真的不明白如何明智地使用SPARK_CLASSPATH或SparkContext.addJar。我两个都试过了,看起来addJar不像我以前认为的那样工作了 在我的例子中,我尝试在闭包或外部使用一些joda时间函数。如果我将SPARK_类路径设置为joda时间罐的路径,则一切正常。但是如果我删除SPARK_类路径并添加到我的程序中: JavaSparkContext sc = new JavaSparkContext("spark:/
JavaSparkContext sc = new JavaSparkContext("spark://localhost:7077", "name", "path-to-spark-home", "path-to-the-job-jar");
sc.addJar("path-to-joda-jar");
虽然在日志中我可以看到:
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
紧接着:
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)
我曾经假设SPARK_CLASSPATH正在为作业的驱动程序部分设置类路径,SparkContext.addJar正在为执行器设置类路径,但它似乎不再正确
有人比我更清楚吗?
SparkContext.addJar
在0.9中被破坏,并且ADD\u JARS
环境变量也被破坏。它过去的工作方式与0.8.x中所述的一样,并且该修复程序已经提交给master,因此预计将在下一个版本中使用。现在,您可以使用Jira中描述的解决方法,也可以制作修补的Spark构建
请参阅相关邮件列表讨论:
Jira问题:
SPARK\u类路径自SPARK 1.0+以来已被弃用。您可以在文件spark defaults.conf
内或使用spark提交标志以编程方式将JAR添加到类路径中
好的,这是一个bug,解决方法是使用SPARK\u类路径。谢谢。SPARK\u类路径
自SPARK 1.0+以来已被弃用。试试这个已经回复的帖子。这提供了很好的描述。