0

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

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

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 环境变量后,使用 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 一样运行?

4

1 回答 1

0

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

于 2017-04-20T23:04:09.863 回答