- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试扩展使用 Scala 和 Spark 的机器学习应用程序。我正在使用我在 Github 上找到的迪特里希·劳森 (Dieterich Lawson) 以前项目的结构
https://github.com/dieterichlawson/admm
该项目基本上使用 SparkContext 构建训练样本块的 RDD,然后对这些集合中的每一个执行本地计算(例如求解线性系统)。
我遵循相同的方案,但对于我的本地计算,我需要对每个训练样本块执行 L-BFGS 算法。为此,我想使用来自 mlLib 的 L-BFGS 算法,该算法具有以下签名。
runLBFGS(RDD<scala.Tuple2<Object,Vector>> data, Gradient gradient,
Updater updater, int numCorrections, double convergenceTol,
int maxNumIterations, double regParam, Vector initialWeights)
val A = sc.textFile("ds1.csv")
A.checkpoint
val f = LogRegressionXUpdate.fromTextFile(A,params.rho,1024,sc)
class LogRegressionXUpdate(val training: RDD[(Double, NV)],
val rho: Double) extends Function1[BDV[Double],Double] with Prox with Serializable{
def prox(x: BDV[Double], rho: Double): BDV[Double] = {
val numCorrections = 10
val convergenceTol = 1e-4
val maxNumIterations = 20
val regParam = 0.1
val (weights, loss) = LBFGS.runLBFGS(
training,
new GradientForLogRegADMM(rho,fromBreeze(x)),
new SimpleUpdater(),
numCorrections,
convergenceTol,
maxNumIterations,
regParam,
fromBreeze(x))
toBreeze(weights.toArray).toDenseVector
}
def apply(x: BDV[Double]): Double = {
Math.pow(1,2.0)
}
object LogRegressionXUpdate {
def fromTextFile(file: RDD[String], rho: Double, blockHeight: Int = 1024, @transient sc: SparkContext): RDF[LogRegressionXUpdate] = {
val fns = new BlockMatrix(file, blockHeight).blocks.
map(X => new LogRegressionXUpdate(sc.parallelize((X(*,::).map(fila => (fila(-1),fromBreeze(fila(0 to -2))))).toArray),rho))
new RDF[LogRegressionXUpdate](fns, 0L)
}
}
Exception in thread "main" org.apache.spark.SparkException: Task not serializable
at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:315)
at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:305)
at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:132)
at org.apache.spark.SparkContext.clean(SparkContext.scala:1891)
at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:294)
at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:293)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:148)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:109)
at org.apache.spark.rdd.RDD.withScope(RDD.scala:286)
at org.apache.spark.rdd.RDD.map(RDD.scala:293)
at admm.functions.LogRegressionXUpdate$.fromTextFile(LogRegressionXUpdate.scala:70)
at admm.examples.Lasso$.run(Lasso.scala:96)
at admm.examples.Lasso$$anonfun$main$1.apply(Lasso.scala:70)
at admm.examples.Lasso$$anonfun$main$1.apply(Lasso.scala:69)
at scala.Option.map(Option.scala:145)
at admm.examples.Lasso$.main(Lasso.scala:69)
at admm.examples.Lasso.main(Lasso.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:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.io.NotSerializableException: org.apache.spark.SparkContext
Serialization stack:
- object not serializable (class: org.apache.spark.SparkContext, value: org.apache.spark.SparkContext@20576557)
- field (class: admm.functions.LogRegressionXUpdate$$anonfun$1, name: sc$1, type: class org.apache.spark.SparkContext)
- object (class admm.functions.LogRegressionXUpdate$$anonfun$1, <function1>)
at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:40)
at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:47)
at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:81)
at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:312)
... 21 more
最佳答案
RDD
s 只能从驱动程序访问。每当你调用类似的东西
myRDD.map(someObject.someMethod)
someMethod
所需的任何内容,并将其发送给工作人员。在那里,该方法被反序列化,然后在每个分区上独立运行。
sc.parallelize
时所做的事情.底线 - 您需要找到(或编写)L-BFGS 的本地实现。
关于scala - SparkContext 在伴随对象内不可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448069/
我正在使用 Spark 在 Scala 中执行测试,创建 SparkContext 如下: val conf = new SparkConf().setMaster("local").setAppNa
我正在使用 spark-1.5.0-cdh5.6.0 .尝试了示例应用程序 (scala) 命令是: > spark-submit --class com.cloudera.spark.simbox.
我正在尝试在 Hadoop YARN 客户端模式下运行我的 spark 作业,我正在使用以下命令 $/usr/hdp/current/spark-client/bin/spark-submit -
我使用的是 Window 10、Scala 2.10.2、Spark 1.6.1 和 Java 1.8。下面是我尝试运行的代码。 import org.apache.spark.SparkCont
我在 PySpark 中有一小段代码,但我不断收到错误。我是新手,所以我不确定从哪里开始。 from pyspark import SparkContext, SparkConf conf = Spa
我正在尝试为 spark 应用程序编写测试,但在尝试运行下一个测试时出现此异常 class BasicIT { val sparkConf: SparkConf = new Sp
这个问题已经有答案了: Mac spark-shell Error initializing SparkContext (13 个回答) 已关闭2 年前。 我已经安装了以下版本的设置:Hadoop版本
所以我是 Spark 新手。我的版本是:Spark 2.1.2、Scala 版本 2.11.8(Java HotSpot(TM) 64 位服务器 VM、Java 1.8.0_131)。我在 Windo
我目前正在尝试扩展使用 Scala 和 Spark 的机器学习应用程序。我正在使用我在 Github 上找到的迪特里希·劳森 (Dieterich Lawson) 以前项目的结构 https://gi
我正在尝试使用 Spark 结构化流处理一些事件。 传入事件如下所示: 事件1: 网址http://first/path/to/read/from... 事件2: 网址http://second/pa
请告诉我我该如何使用 SparkContext 指定textFile()的输入路径。像下面这样对我不起作用。 sc.textFile("hdfs://localhost:54310/home/myFi
我正在尝试使用 Spark 结构化流处理一些事件。 传入事件如下所示: 事件1: 网址http://first/path/to/read/from... 事件2: 网址http://second/pa
我正在使用 Spark-shell 学习 Spark。 当从终端运行spark-shell时,默认已经提供了一个sparkContext。我想向 Spark 上下文添加一些手动设置(例如 setMas
我正处于学习spark的初级阶段。我刚刚开始使用 pyspark 使用 python 进行编码。在浏览基本代码时,我在 Jupyter 笔记本上遇到了此错误。好吧,我已经在我的电脑上安装了 Spark
我正在尝试使用wholeTextFiles读取文件夹中的所有文件名并单独处理它们(例如,我正在尝试获取每个数据集的SVD vector ,总共有100组)。数据保存在按空格分割并排列在不同行(如矩阵)
我在 CentOS 上工作,我已经设置了 $SPARK_HOME 并且还在 $PATH 中添加了 bin 的路径。 我可以从任何地方运行 pyspark。 但是当我尝试创建 python 文件并使用此
如何停止当前运行的任何 Spark 上下文。 信息API:斯卡拉Spark版本:Spark 2.3 实际上我已经创建了 Spark 上下文。为了阻止他们我应该输入例如instance.stop() 但
作为 this question 的延续, 你能告诉我我可以从 SparkContext.setLocalProperties 更改哪些属性吗? ? 我可以更换内核、RAM 等吗? 最佳答案 根据文档
我正在尝试使用 intellij 在 spark 上运行 Scala 代码。 Scala 代码 import scala.collection.JavaConverters._ import org.
我发誓我以前做过,但我找不到代码或答案。我想获取当前正在运行的 SparkContext 的名称并将其读入变量或将其打印到屏幕上。类似于以下内容: val myContext = SparkConte
我是一名优秀的程序员,十分优秀!