如何将脱机Apache Spark依赖项添加到Java应用程序中?

时间:2018-02-12 09:53:37

标签: java eclipse apache-spark gradle

我想在Java中开始使用Apache Spark。所以我开始关注this tutorial。在本教程中,他们展示了一个用Eclipse IDE编写的简单桌面应用程序,并使用Eclipse的Gradle插件进行编译和运行。

我遵循了本教程,一切都很完美。这是他们的 build.gradle文件:

apply plugin: 'java-library'

repositories {
    jcenter()
}

dependencies {
    compileOnly 'org.apache.spark:spark-core_2.11:2.1.0'
    testImplementation 'org.apache.spark:spark-core_2.11:2.1.0','junit:junit:4.12'
}

到目前为止一切顺利!但现在我真正的需要是能够在离线系统中编译和运行Spark应用程序。所以我做的是搜索 org.apache.spark:spark-core_2.11:2.1.0 {在jcenter中{1}} 并下载了所有junit:junit:4.12个文件,然后在项目根目录中创建了一个名为.jar的文件夹,然后添加了所有libs个文件按照this method跟踪我项目的构建路径。

我修改了 .jar 文件,如下所示:

build.gradle

编译此修改后的应用程序时,我在控制台中收到以下错误。问题是我做错了什么?如何摆脱这个问题?

apply plugin: 'java'
apply plugin: 'application'

//apply plugin: 'java-library'


repositories {
    jcenter()
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

1 个答案:

答案 0 :(得分:0)

SparkConf实现了scala.Cloneable和scala.Serializable接口,这两个接口都不是org.apache.spark:spark-core的一部分,而是org.apache.spark:scala-library。如果你将这个jar添加到你的项目中,就像你对核心jar一样,这两个错误就会消失。