我有一个包含8个节点的运行分析(Spark Enabled)dse集群 . Spark Shell工作正常 . 现在我想构建一个spark应用程序并使用命令“dse spark-class”将其部署到集群上,根据dse文档,我认为该命令是正确的工具 .
我用sbt程序集构建了应用程序,我得到了我的应用程序的胖 jar . 经过大量的挖掘后,我想出去导出env var $ SPARK_CLIENT_CLASSPATH,因为它被spark-class命令引用
export SPARK_CLIENT_CLASSPATH=<fat jar full path>
现在我可以调用:
dse spark-class <main Class>
由于classNotFound异常,应用程序立即崩溃 . 它无法识别我的应用程序的内部类 .
我能够使其工作的唯一方法是初始化SparkConf,如下所示:
val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", "cassandrahost")
.set("spark.cassandra.auth.username", "cassandra")
.set("spark.cassandra.auth.password", "cassandra")
.setJars(Seq("fat-jar-full-path"))
val sc = new SparkContext("spark://masterurl:7077", "DataGenerator", conf)
方法setJars允许将我的jar分派给集群工作者 .
这是实现这一目标的唯一途径吗?我觉得它很丑陋而且不便携 .
是否可以使用外部配置来设置主URL,cassandra主机和app jar路径?
我已经看到从Spark 1.0开始有spark-submit命令允许从外部指定app-jar . 是否可以在DSE 4.5.3中将spark更新到1.1版?
非常感谢
1 回答
您可以使用今天刚刚(2014年12月3日)删除的DSE 4.6的Spark提交,并包含Spark 1.1 .
以下是新功能:
LDAP身份验证增强的审核日志
Spark增强功能:
搜索增强功能:
在这里查看文档:http://www.datastax.com/documentation/datastax_enterprise/4.6/datastax_enterprise/newFeatures.html
像往常一样,您可以使用您的凭据下载:
http://downloads.datastax.com/enterprise/opscenter.tar.gz
http://downloads.datastax.com/enterprise/dse-4.6-bin.tar.gz