当前位置: 首页 > 知识库问答 >
问题:

使用sbt-spark-package插件理解build.sbt

时浩波
2023-03-14

我是新的scala和SBT构建文件。从入门教程中可以直接通过sbt-spark-package插件向scala项目添加spark依赖项,但我得到了以下错误:

[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))
  }
}
resolvers += "bintray-spark-packages" at "https://dl.bintray.com/spark-packages/maven/"

addSbtPlugin("org.spark-packages" % "sbt-spark-package" % "0.2.6")

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"
)

spName := "yewno/citation_graph"

version := "0.1"

scalaVersion := "2.11.12"

sparkVersion := "2.2.0"

sparkComponents ++= Seq("core", "sql", "graphx")

额外的解释+参考资料链接,以了解更多关于SBT构建过程、jar文件和任何其他可以帮助我跟上速度的东西!

共有1个答案

邵君植
2023-03-14

sbt-spark-package插件在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:provided

提供的作用域表示:

run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run)).evaluated
 类似资料:
  • 我试图构建一个具有spark依赖关系的非常基本的scala脚本。但我不能用它做罐子。 我的scala源代码在: /exampleapp/main/scala/example/hello.scala 项目名为exampleapp。

  • 在为一个小型Spark Scala应用程序从命令行运行“sbt包”时,我在以下代码行中得到“value$is not a member of StringContext”编译错误: Intellij 13.1给了我同样的错误消息。相同的。scala源代码在Eclipse 4.4.2中编译时没有任何问题。此外,它在命令行的一个单独的maven项目中与maven配合良好。 sbt似乎无法识别$符号,因

  • 我有一个sbt插件项目,使用多项目构建。我想使用这个插件作为其他sbt项目的依赖项。我已经创建了一个插件,但是当我把这个插件添加到project中时,我似乎不能正确地连接依赖项。 我在这里漏掉了什么?

  • 我已经克隆了sbteclipse,我正在阅读scala-sbt教程,上面说: 我在/home/mil目录中,而sbteclipse在同一个目录中。sbteclipse内部是带有plugins.sbt的项目目录

  • 我需要一些关于这些的帮助,我克隆了这个存储库https://github.com/oermolaev/simple-scala-rest-example,但是当我运行sbt时,我得到了这样的错误:有趣的是,我无法运行,也许有些存储库已经过时了...如果你能帮助我,我将非常高兴 解析器++=Seq(“Sonatype Snapshots”(“http://oss.sonatype.org/conte

  • 我有一个Play应用程序,当我运行时,我得到一个错误,如下所示: 但实际上,这个插件的路径是而不是失败的试用。 project/plugin.sbt如下所示: 请指教。