Ich bin ein Anfänger von spark.Ich baue eine Umgebung verwenden "linux + idea + sbt", wenn ich den schnellen Start von Spark versuche, bekomme ich das Problem:Idee 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
die Versionen von ihnen in meiner Festplatte:
sbt = 0.13.11
jdk = 1.8
scala = 2.10
idea = 2016
Meine Verzeichnisstruktur:
test/
idea/
out/
project/
build.properties
plugins.sbt
src/
main/
java/
resources/
scala/
scala-2.10/
test.scala
target/
assembly.sbt
build.sbt
in build.propert ies:
sbt.version = 0.13.8
In plugins.sbt:
logLevel := Level.Warn
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
In 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"
In assembly.sbt:
import AssemblyKeys._ // put this at the top of the file
assemblySettings
In 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))
}
}
Wie kann ich dieses Problem lösen?
Ich habe dieses Problem für eine Scala-Klasse "src/main/scala/app/Main.scala". Alles sieht gut aus, die Anwendung wird ausgeführt, aber ich kann 'ScparkConf()' nicht instanziieren, weil ich auch einen 'NoClassDefFoundError' bekomme. Ich folge [diesem Tutorial] (https://hortonworks.com/tutorial/setting-up-a-spark-development-environment-with-scala/), das auch 'depended' in der Abhängigkeitsverwaltung verwendet. Was ich nicht ganz verstehe ist, dass es für mich so aussieht, als ob das so funktionieren sollte. Also sollte ich "zur Verfügung gestellt" entfernen oder kann ich das auch mit dieser Flagge machen? – displayname