在this presentation中,他们展示了一个"升级" Spark版本只是通过传递更新的spark-assembly.jar作为依赖。这里有相关的片段("升级"从Spark 0.9到1.1):
export SPARK_JAR=/usr/lib/spark-assembly-1.1.0-SNAPSHOT-hadoop2.2.0.jar
java -cp /etc/hadoop/conf:AppJar.jar:spark-assembly.jar org.apache.spark.deploy.yarn.Client --jar AppJar.jar --addJars /jars/config.jar --class ooyala.app.MainClass --arg arg1 --arg arg2 --name MyApp
这是非常好的可能性,因为它允许使用最新功能,而无需经常升级整个群集。但是,上面的代码现在已经完全过时了,所以我尝试使用与spark-submit
类似的东西(尝试将Spark 1.5 jar添加到运行Spark 1.2的集群中):
~/spark-1.5/bin/spark-submit \
--jars ~/spark-assembly-1.5.1-hadoop2.4.0.jar \
--class ooyala.app.MainClass
--master yarn-client
ooyala-test_2.10-1.0.jar
但它也不起作用,导致NullPointerException
深入Spark内部。
有没有人有经验在最新版本的Spark上做这个技巧?