如何在自包含的 Scala Spark 程序中使用 mesos master url
How to use mesos master url in a self-contained Scala Spark program
我正在创建一个自包含的 Scala 程序,它在某些部分使用 Spark 进行并行化。在我的具体情况下,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 一样?
将 spark-mesos 个 jar 添加到您的类路径中。
我正在创建一个自包含的 Scala 程序,它在某些部分使用 Spark 进行并行化。在我的具体情况下,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 一样?
将 spark-mesos 个 jar 添加到您的类路径中。