我正在使用一个独立的火花群,一个主人和两个工人.我真的不明白如何明智地使用SPARK_CLASSPATH或SparkContext.addJar.我试过两个,看起来addJar不像以前那样工作.
在我的情况下,我试图在闭包或外面使用一些joda-time函数.如果我使用joda-time jar的路径设置SPARK_CLASSPATH,一切正常.但是,如果我删除SPARK_CLASSPATH并添加我的程序:
JavaSparkContext sc = new JavaSparkContext("spark://localhost:7077", "name", "path-to-spark-home", "path-to-the-job-jar");
sc.addJar("path-to-joda-jar");
Run Code Online (Sandbox Code Playgroud)
它不再起作用,虽然在日志中我可以看到:
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
Run Code Online (Sandbox Code Playgroud)
并且立即:
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)
Run Code Online (Sandbox Code Playgroud)
我以前认为SPARK_CLASSPATH正在为作业的驱动程序部分设置类路径,而SparkContext.addJar正在设置执行程序的类路径,但它似乎不再正确.
谁知道比我更好?
SparkContext.addJar在 0.9 以及ADD_JARS环境变量中都被破坏了。它曾经按照 0.8.x 中记录的方式工作,并且修复已提交给 master,因此预计会在下一个版本中出现。现在,您可以使用 Jira 中描述的解决方法或进行修补的 Spark 构建。
Jira 问题:https://spark-project.atlassian.net/plugins/servlet/mobile#issue/SPARK-1089
| 归档时间: |
|
| 查看次数: |
11536 次 |
| 最近记录: |