【问题标题】:Apache Spark unable to find classApache Spark 找不到类
【发布时间】:2017-02-12 11:38:18
【问题描述】:

我正在尝试使用apache spark 和scala sbt 开发独立应用程序 我一次又一次地遇到这个错误。

线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/spark/SparkConf 在 AuctionsApp$.main(AuctionsApp.scala:5)

这里是代码 sn-p。

import org.apache.spark.SparkConf

object AuctionsApp {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("AuctionsApp")
    println(conf)
  }
}

build.sbt文件

name := "AuctionsApp"

version := "1.0"

scalaVersion := "2.10.5"

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.2.0-cdh5.3.2" % "provided"


resolvers += "Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/"

我可以通过按命令导航到SparkConf 文件并单击import 语句中的类名,这意味着它与其他代码一起驻留在那里。

项目构建也成功。

感谢任何帮助。

PS。使用IntelliJ Idea CE 版本2016.3

【问题讨论】:

    标签: java scala apache-spark intellij-idea


    【解决方案1】:

    请注意,在 SBT 中,您指定 provided,这意味着当应用程序启动时,假定包含该类的 JAR 存在于类路径中,而在本地调试时并非如此。

    为了解决这个问题,我们创建了一个额外的项目,专门用于在本地调试 Spark。首先,我们在项目定义之外声明对 Spark 的依赖:

    lazy val sparkDeps = Seq(
      "org.apache.spark" %% "spark-core" % "1.2.0-cdh5.3.2"
    )
    

    然后我们创建新项目,它依赖于我们的主项目和map over Sparks 依赖项,并将compile 注解添加到模块中:

    lazy val sparkProject = 
      project in file("spark-project")
      .settings(
       // Add your settings and such
      )
    
    lazy val sparkDebugger = project in file("spark-debugger")
      .dependsOn(sparkProject)
      .settings(
        libraryDependencies ++= sparkDeps.map(_ % "compile")
    )
    

    当我们想在本地调试 Spark 时,我们让我们的 main 方法从 Debug Configuration 窗口中的 sparkDebugger 项目加载:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-06
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多