java - 根据 DataStax Enterprise 的运行时类路径构建 Spark 应用程序

标签 java scala apache-spark datastax datastax-enterprise

我有带 Spark 的 DataStax Enterprise 4.8。我想使用 Gradle 构建一个用 Scala 编写的 Spark 应用程序并在此 DSE 集群上运行它,但我想避免在运行时出现任何类路径问题。

目前,我的编译时依赖项(和冲突解决方案)由 Gradle 自动管理,这已经在运行时引起了各种问题。

什么是标准方式?我想避免构建一个包含所有依赖项的 fat-jar。

最佳答案

我只会使用 dse spark-classpath 命令提供的库。我会将其合并到构建文件中,例如

对于 SBT

val sparkClasspathStr = s"$DSE_HOME/bin/dse spark-classpath".!!.trim
val sparkClasspathArr = sparkClasspathStr.split(':')

//Find all Jars on dse spark-classpath
val sparkClasspath = {
  for ( dseJar <- sparkClasspathArr if dseJar.endsWith("jar"))
    yield Attributed.blank(file(dseJar))
}.toSeq

//Your dependencies
//libraryDependencies += "com.github.scopt" %% "scopt" % "3.2.0"

//Add dse jars to classpath
unmanagedJars in Compile ++= sparkClasspath
unmanagedJars in Test ++= sparkClasspath

Gradle

def DSE_HOME = (System.getenv("DSE_HOME") != null) ? System.getenv("DSE_HOME") : System.getenv("HOME")+"dse"

def sparkClasspathStr = (DSE_HOME + "/bin/dse spark-classpath").execute().text.trim()
def sparkClasspathJars = sparkClasspathStr.split(":").findAll{ it.endsWith(".jar") }

dependencies {
    compile files(sparkClasspathJars)
}

关于java - 根据 DataStax Enterprise 的运行时类路径构建 Spark 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969505/

相关文章:

scala - 函数的参数类型是逆变的,返回类型是协变的

apache-spark - Spark中的特征归一化算法

apache-spark - 如何在 Databricks(社区版)上本地保存 Great_Expectations 套件

java - 按原来的顺序解析 JSON

java - 输入到小程序

java - Tomcat - 响应后做事

scala - Play WS - 从 scala 发布多部分/表单数据 - 错误请求

json - 使用 scala play 将 Json 对象添加到 JSON 数组

java - 如何在 SonarQube 4.5 插件中注册自定义规则?

hadoop - Spark/Hadoop 作业未并行运行