【问题标题】:How to add offline Apache Spark dependencies to Java application?如何将离线 Apache Spark 依赖项添加到 Java 应用程序?
【发布时间】:2018-07-22 10:52:43
【问题描述】:

我想开始使用 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.0junit:junit:4.12 jcenter 中并下载所有.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')
}

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

Working Directory: /home/jason/WorkspaceOfGetStartedWithSparkJava/FirstApacheSparkProjectWithOfflineDependencies
Gradle User Home: /usr/share/gradle/bin
Gradle Distribution: Gradle wrapper from target build
Gradle Version: 4.3
Java Home: /usr/lib/jvm/java-8-oracle
JVM Arguments: None
Program Arguments: None
Build Scans Enabled: false
Offline Mode Enabled: false
Gradle Tasks: build

:compileJava/home/jason/WorkspaceOfGetStartedWithSparkJava/FirstApacheSparkProjectWithOfflineDependencies/src/main/java/main_package/SparkDriverProgram.java:21: error: cannot access Cloneable
        conf.setAppName("Schneider");
            ^
  class file for scala.Cloneable not found
/home/jason/WorkspaceOfGetStartedWithSparkJava/FirstApacheSparkProjectWithOfflineDependencies/src/main/java/main_package/SparkDriverProgram.java:22: error: cannot access Serializable
        conf.setMaster("local");
            ^
  class file for scala.Serializable not found
2 errors
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
1 actionable task: 1 executed

【问题讨论】:

标签: java eclipse apache-spark gradle


【解决方案1】:

SparkConf 实现了接口 scala.Cloneable 和 scala.Serializable 两者都不是 org.apache.spark:spark-core 的一部分,而是 org.apache.spark:scala-library 的一部分。如果您以与使用核心 jar 相同的方式将该 jar 添加到项目中,那么这两个错误应该会消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2015-09-07
    • 2017-08-17
    • 2023-04-01
    • 2015-09-10
    • 2016-10-23
    • 2012-12-30
    相关资源
    最近更新 更多