【发布时间】:2023-03-12 19:25:01
【问题描述】:
我有一个 8 个节点的正在运行的分析(已启用 Spark)dse 集群。 Spark Shell 工作正常。 现在我想构建一个 spark 应用程序,并使用命令“dse spark-class”将其部署到集群上,根据 dse 文档,我猜这是该工作的正确工具。
我使用 sbt 程序集构建了应用程序,并得到了我的应用程序的胖罐。 然后经过大量挖掘,我想出了导出环境变量 $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 主机和应用程序 jar 路径?
我已经看到从 Spark 1.0 开始有 spark-submit 命令允许在外部指定 app-jar。是否可以在 DSE 4.5.3 中将 spark 更新到 1.1 版?
非常感谢
【问题讨论】:
标签: apache-spark datastax-enterprise