我们应该如何解决 Spark 的 sbt 文件中的本地依赖关系

Posted

技术标签:

【中文标题】我们应该如何解决 Spark 的 sbt 文件中的本地依赖关系【英文标题】:How should we address local dependencies in sbt files for Spark 【发布时间】:2016-01-25 01:37:21 【问题描述】:

我有这个 sbt 文件:

offline := true
name := "hello"
version := "1.0"
scalaVersion := "2.11.7-local"
scalaHome := Some(file("/home/ubuntu/software/scala-2.11.7"))
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.0" % "provided"

我如何告诉它使用Spark 这个地址而不是使用网络?

/home/ubuntu/software/spark-1.5.0-bin-hadoop2.6

因为它只是尝试连接到 Internet 以获取 Spark 依赖项,而我的 VM 由于安全问题而无法访问 Internet。

我最终想运行这个简单的代码:

import org.apache.spark.SparkContext._
import org.apache.spark.api.java._
import org.apache.spark.api.java.function.Function_
import org.apache.spark.graphx._
import org.apache.spark.graphx.lib._
import org.apache.spark.graphx.PartitionStrategy._
//class PartBQ1

object PartBQ1
val conf = new SparkConf().setMaster("spark://10.0.1.31:7077")
             .setAppName("CS-838-Assignment2-Question2")
             .set("spark.driver.memory", "1g")
             .set("spark.eventLog.enabled", "true")
             .set("spark.eventLog.dir", "/home/ubuntu/storage/logs")
             .set("spark.executor.memory", "21g")
             .set("spark.executor.cores", "4")
             .set("spark.cores.max", "4")
             .set("spark.task.cpus", "1")

val sc = new SparkContext(conf=conf)
val sql_ctx = new SQLContext(sc)
val graph = GraphLoader.edgeListFile(sc, "data2.txt")

【问题讨论】:

【参考方案1】:

我猜你可以使用类似的东西(假设 spark 在你的类路径中)

run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run)) 

按照

中的建议

https://***.com/a/21803413/1706351

https://github.com/sbt/sbt-assembly#-provided-configuration

【讨论】:

【参考方案2】:

这些是我为解决新 MVC 2 项目和 Spark 1.1 的问题而采取的步骤:

1.针对 MVC 2.0 编译 - 我仔细检查了引用以确保我链接到 MVC 2 而不是 MVC 1。因为这是一个新项目,所以这不是问题。 2.添加 System.Web.Mvc.Html - 我将 System.Web.Mvc.html 添加到 Spark 配置中,以确保将命名空间添加到所有视图。

在 Global.asax.cs Application_Start 中

var settings = new SparkSettings()
    .SetDebug(true)
    .SetAutomaticEncoding(true)
    .AddAssembly("Web")
    .AddNamespace("Web.Model")
    .AddNamespace("System.Collections.Generic")
    .AddNamespace("System.Linq")
    .AddNamespace("System.Web.Mvc")
    .AddNamespace("System.Web.Mvc.Html");

这也可以在 Spark View Engine 块的 webconfig 中完成。

3.添加类型化模型 - 确保键入 Spark 视图模型。在 aspx 中,这是通过页面声明中的 Inherits 完成的,如下所示:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MyModelType>" %>

在 Spark 中:

<viewdata model="MyModelType" />

【讨论】:

以上是关于我们应该如何解决 Spark 的 sbt 文件中的本地依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

在 SBT 生成的胖 JAR 中包含 Spark 包 JAR 文件

build.sbt:如何添加 spark 依赖项

spark 应用程序如何使用 sbt run 启动。

sbt打包error(sbt.librarymanagement.ResolveException: unresolved dependency: org.apache.spark#spark-str

为啥 sbt 因 sbt.ResolveException 失败:Spark 2.0.0 和 Scala 2.9.1 的未解决依赖关系?

Spark 2.1.0 在 SBT 上的“未解决的依赖关系”