我们应该如何解决 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 文件
sbt打包error(sbt.librarymanagement.ResolveException: unresolved dependency: org.apache.spark#spark-str
为啥 sbt 因 sbt.ResolveException 失败:Spark 2.0.0 和 Scala 2.9.1 的未解决依赖关系?