如何在Spark Streaming中仅对新批次重新训练模型(不使用以前的训练数据集)?

时间:2016-11-25 09:46:48

标签: apache-spark pyspark spark-streaming apache-spark-mllib

我试图编写我的第一个建议模型(Spark 2.0.2),我想知道是否可能, 在初始训练之后,当模型详细说明我的所有rdd时,只使用三角洲为未来的火车。

让我通过一个例子来解释:

  1. 首批执行第一次训练,所有rdd(200000 元素),系统启动时。
  2. 在火车末尾,模型已保存。
  3. 第二批应用程序(spark streaming)加载模型 以前保存并听取了kinesis队列。
  4. 当新元素到达时,第二批应该执行a 训练(在delta模式下?!),无需加载所有200000个元素 之前,只是模型和新元素。
  5. 在火车末尾,保存更新的模型。
  6. 问题是,是否有可能以某种方式执行第4步?

1 个答案:

答案 0 :(得分:1)

我的理解是,机器学习算法只能用于支持StreamingKMeansStreamingLogisticRegressionWithSGD等流媒体培训。

引用他们的文件(参见上面的有效参考资料):

(StreamingLogisticRegressionWithSGD)训练或预测流数据的逻辑回归模型。训练使用随机梯度下降来根据来自DStream的每批新传入数据更新模型(请参阅LogisticRegressionWithSGD获取模型方程式)

StreamingKMeans提供了配置流式k-means分析,在流式传输上训练模型以及使用模型对流数据进行预测的方法。

我对这些算法感到担忧的是,它们属于org.apache.spark.mllib.clustering包,现在已弃用(因为它基于RDD而非基于数据框架)。我不知道他们是否已经使用DataFrame来改进他们的JIRA。