我正在使用StreamingLinearRegressionWithSGD
,它有两种方法trainOn
和predictOn
。此类有一个model对象,当训练数据到达trainOn
参数中指定的流时,该对象会更新。
同时使用相同的模型进行预测。
我想知道如何在工人/执行者之间更新和同步模型权重。
任何链接或参考都会有所帮助。感谢。
答案 0 :(得分:2)
这里没有魔力。 StreamingLinearAlgorithm
keeps a mutable reference到当前GeneralizedLinearModel
。
trainOn
uses DStream.foreachRDD
to train a new model on each batch, and then updates the model
。同样predictOn
uses DStream.map
to predict使用当前版本的model
。
由于Spark会为每个阶段序列化闭包,因此不需要任何额外的同步。每次计算闭包时,Spark都会使用model
的当前值。
实际上相当于使用交错run
和predict
在驱动程序上运行循环。