我是新的scala和SBT构建文件。在入门教程中,将火花依赖项添加到scala项目应该是通过sbt火花包插件直接进行的,但是我得到了以下错误:
[error] (run-main-0) java.lang.NoClassDefFoundError: org/apache/spark/SparkContext请提供资源,以了解更多关于什么可能是驱动错误,因为我想更彻底地理解过程。
代码:
trait SparkSessionWrapper {
lazy val spark: SparkSession = {
SparkSession
.builder()
.master("local")
.appName("spark citation graph")
.getOrCreate()
}
val sc = spark.sparkContext
}
import org.apache.spark.graphx.GraphLoader
object Test extends SparkSessionWrapper {
def main(args: Array[String]) {
println("Testing, testing, testing, testing...")
var filePath = "Desktop/citations.txt"
val citeGraph = GraphLoader.edgeListFile(sc, filepath)
println(citeGraph.vertices.take(1))
}
}plugins.sbt
resolvers += "bintray-spark-packages" at "https://dl.bintray.com/spark-packages/maven/"
addSbtPlugin("org.spark-packages" % "sbt-spark-package" % "0.2.6")build.sbt --工作。为什么libraryDependencies运行/工作?
spName := "yewno/citation_graph"
version := "0.1"
scalaVersion := "2.11.12"
sparkVersion := "2.2.0"
sparkComponents ++= Seq("core", "sql", "graphx")
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "2.2.0",
"org.apache.spark" %% "spark-sql" % "2.2.0",
"org.apache.spark" %% "spark-graphx" % "2.2.0"
)build.sbt -不起作用。应该编译并正确运行。
spName := "yewno/citation_graph"
version := "0.1"
scalaVersion := "2.11.12"
sparkVersion := "2.2.0"
sparkComponents ++= Seq("core", "sql", "graphx")奖金的解释+链接到资源,以了解更多关于SBT构建过程,jar文件,以及任何其他可以帮助我提高速度!
发布于 2019-02-21 01:04:33
sbt-火花塞插件在provided作用域中提供依赖关系:
sparkComponentSet.map { component =>
"org.apache.spark" %% s"spark-$component" % sparkVersion.value % "provided"
}.toSeq我们可以通过从sbt运行show libraryDependencies来确认这一点:
[info] * org.scala-lang:scala-library:2.11.12
[info] * org.apache.spark:spark-core:2.2.0:provided
[info] * org.apache.spark:spark-sql:2.2.0:provided
[info] * org.apache.spark:spark-graphx:2.2.0:providedprovided范围意味着:
该依赖项将是编译和测试的一部分,但不包含在运行时。
因此,sbt run抛出java.lang.NoClassDefFoundError: org/apache/spark/SparkContext
如果我们真的想在provided类路径上包含run依赖项,那么@douglaz建议:
run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run)).evaluatedhttps://stackoverflow.com/questions/54796866
复制相似问题