[英]Apache Spark unable to find class
我正在嘗試使用apache spark
和scala sbt
開發獨立的應用程序,我一次又一次地收到此錯誤。
線程“main”中的異常 java.lang.NoClassDefFoundError: org/apache/spark/SparkConf at AuctionsApp$.main(AuctionsApp.scala:5)
這是代碼片段。
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
語句中的類名,這意味着它與其他代碼一起駐留在那里。
項目建設也很成功。
任何幫助表示贊賞。
附注。 使用IntelliJ Idea CE
版本2016.3
請注意,在 SBT 中,您指定了provided
,這意味着當應用程序啟動時,假定包含類的 JAR 存在於類路徑中,而在本地調試時則不然。
為了解決這個問題,我們創建了一個額外的項目,專門用於在本地調試 Spark。 首先,我們在項目定義之外聲明對 Spark 的依賴:
lazy val sparkDeps = Seq(
"org.apache.spark" %% "spark-core" % "1.2.0-cdh5.3.2"
)
然后我們創建依賴於我們的主項目的新項目並map
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 時,我們從 Debug Configuration 窗口中的sparkDebugger
項目加載我們的 main 方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.