我正在研究StreamingLinearRegressionWithSGD https://spark.apache.org/docs/1.6.3/api/java/org/apache/spark/mllib/regression/StreamingLinearRegressionWithSGD.html它有两个方法trainOn https://spark.apache.org/docs/1.6.3/api/java/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.html#trainOn(org.apache.spark.streaming.dstream.DStream) and predictOn https://spark.apache.org/docs/1.6.3/api/java/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.html#predictOn(org.apache.spark.streaming.dstream.DStream)。这个类有一个model https://spark.apache.org/docs/1.6.3/api/java/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.html#latestModel()当训练数据到达指定的流中时更新的对象trainOn
争论。
同时它使用相同的模型给出预测。
我想知道模型权重如何在工作人员/执行人员之间更新和同步。
任何链接或参考都会有帮助。谢谢。
这里没有魔法。StreamingLinearAlgorithm
保留可变引用 https://github.com/apache/spark/blob/a1e40b1f5d651305bbd0ba05779263a44f607498/mllib/src/main/scala/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.scala#L65到目前的GeneralizedLinearModel
.
trainOn
uses DStream.foreachRDD在每个批次上训练一个新模型,然后更新model https://github.com/apache/spark/blob/a1e40b1f5d651305bbd0ba05779263a44f607498/mllib/src/main/scala/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.scala#L92-L94。相似地predictOn uses DStream.map预测 https://github.com/apache/spark/blob/a1e40b1f5d651305bbd0ba05779263a44f607498/mllib/src/main/scala/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.scala#L123与当前版本的model
.
由于 Spark 将为每个阶段序列化闭包,因此不需要任何额外的同步。 Spark 将使用当前值model
每次计算闭包时。
实际上,它相当于在具有交错的驱动程序上运行循环run
and predict
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)