Tôi là người mới bắt đầu của spark.I xây dựng một môi trường sử dụng "linux + idea + sbt", khi tôi thử khởi động nhanh Spark, tôi nhận được vấn đề:ý tưởng sbt java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
at test$.main(test.scala:11)
at test.main(test.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.SparkConf
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
các phiên bản của chúng trong đĩa của tôi:
sbt = 0.13.11
jdk = 1.8
scala = 2.10
idea = 2016
cấu trúc thư mục My:
test/
idea/
out/
project/
build.properties
plugins.sbt
src/
main/
java/
resources/
scala/
scala-2.10/
test.scala
target/
assembly.sbt
build.sbt
trong build.propert ies:
sbt.version = 0.13.8
Trong plugins.sbt:
logLevel := Level.Warn
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
Trong build.sbt:
import sbt._
import Keys._
import sbtassembly.Plugin._
import AssemblyKeys._
name := "test"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided"
Trong assembly.sbt:
import AssemblyKeys._ // put this at the top of the file
assemblySettings
Trong test.scala:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object test {
def main(args: Array[String]) {
val logFile = "/opt/spark-1.6.1-bin-hadoop2.6/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Test Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
Làm cách nào để giải quyết vấn đề này.
Tôi gặp sự cố này đối với lớp Scala 'src/main/scala/app/Main.scala'. Mọi thứ đều ổn, ứng dụng được thực hiện, nhưng tôi không thể khởi tạo 'ScparkConf()' bởi vì tôi cũng nhận được một 'NoClassDefFoundError'. Tôi đang theo [hướng dẫn này] (https://hortonworks.com/tutorial/setting-up-a-spark-development-environment-with-scala/) cũng sử dụng 'cung cấp' trong quản lý phụ thuộc. Những gì tôi không hoàn toàn hiểu là với tôi nó trông giống như nếu điều này sẽ làm việc như thế này. Vì vậy, tôi nên loại bỏ 'cung cấp' hoặc tôi có thể làm cho công việc này ngay cả với bộ cờ này? – displayname