如何在 Spark Streaming 中仅在新批次上重新训练模型(不采用以前的训练数据集)?
How to re-train models on new batches only (without taking the previous training dataset) in Spark Streaming?
我正在尝试编写我的第一个推荐模型 (Spark 2.0.2),我想知道是否可行,
在模型详细说明我所有的 rdd 的初始训练之后,只为未来的训练使用一个增量。
让我通过一个例子来解释:
- 第一批执行第一次训练,所有 rdd (200000
元素),当系统启动时。
- 在训练结束时模型被保存。
- 第二批应用程序(火花流)加载模型
之前保存并监听运动队列。
- 当新元素到达时,第二批应该执行
训练(在增量模式下?!)没有负载所有 200000 个元素
之前,但只是模型和一个新元素。
- 训练结束时更新的模型被保存。
问题是,是否有可能以某种方式执行第 4 步?
我的理解是,只有设计用于支持流式训练的机器学习算法才有可能,例如 StreamingKMeans or StreamingLogisticRegressionWithSGD。
引用他们的文档(参见上面的有效参考):
(StreamingLogisticRegressionWithSGD) 在流数据上训练或预测逻辑回归模型。训练使用随机梯度下降根据来自 DStream 的每批新传入数据更新模型(请参阅模型方程的 LogisticRegressionWithSGD)
StreamingKMeans 提供配置流式 k-均值分析、训练流式模型以及使用模型对流式数据进行预测的方法。
让我担心的是算法属于 org.apache.spark.mllib.clustering
包,现在已弃用(因为它是基于 RDD 而不是基于 DataFrame 的)。我不知道他们是否有他们的 JIRAs 来用 DataFrame 改造它们。
我正在尝试编写我的第一个推荐模型 (Spark 2.0.2),我想知道是否可行, 在模型详细说明我所有的 rdd 的初始训练之后,只为未来的训练使用一个增量。
让我通过一个例子来解释:
- 第一批执行第一次训练,所有 rdd (200000 元素),当系统启动时。
- 在训练结束时模型被保存。
- 第二批应用程序(火花流)加载模型 之前保存并监听运动队列。
- 当新元素到达时,第二批应该执行 训练(在增量模式下?!)没有负载所有 200000 个元素 之前,但只是模型和一个新元素。
- 训练结束时更新的模型被保存。
问题是,是否有可能以某种方式执行第 4 步?
我的理解是,只有设计用于支持流式训练的机器学习算法才有可能,例如 StreamingKMeans or StreamingLogisticRegressionWithSGD。
引用他们的文档(参见上面的有效参考):
(StreamingLogisticRegressionWithSGD) 在流数据上训练或预测逻辑回归模型。训练使用随机梯度下降根据来自 DStream 的每批新传入数据更新模型(请参阅模型方程的 LogisticRegressionWithSGD)
StreamingKMeans 提供配置流式 k-均值分析、训练流式模型以及使用模型对流式数据进行预测的方法。
让我担心的是算法属于 org.apache.spark.mllib.clustering
包,现在已弃用(因为它是基于 RDD 而不是基于 DataFrame 的)。我不知道他们是否有他们的 JIRAs 来用 DataFrame 改造它们。