如何在自包含的Scala Spark程序中使用mesos主URL

时间:2017-04-20 22:14:36

标签: scala apache-spark apache-spark-standalone

我正在创建一个自包含的Scala程序,它在某些部分使用Spark进行并行化。在我的特定情况下,Spark集群可以通过mesos获得。

我创建了这样的火花上下文:

val conf = new SparkConf().setMaster("mesos://zk://<mesos-url1>,<mesos-url2>/spark/mesos-rtspark").setAppName("foo")
val sc = new SparkContext(conf)

我从搜索中发现你必须指定MESOS_NATIVE_JAVA_LIBRARY env var来指向libmesos库,所以在运行我的Scala程序时我会这样做:

MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.dylib sbt run

但是,这会导致SparkException:

ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Could not parse Master URL: 'mesos://zk://<mesos-url1>,<mesos-url2>/spark/mesos-rtspark'

同时,导出MESOS_NATIVE_JAVA_LIBRARY env var后,使用spark-submit似乎工作正常。

MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.dylib spark-submit --class <MAIN CLASS> ./target/scala-2.10/<APP_JAR>.jar

为什么?

如何让独立程序像spark-submit一样运行?

1 个答案:

答案 0 :(得分:0)

spark-mesos jar添加到类路径中。