关于 pyspark:如何在 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
    元素),系统启动时。
  • 在训练结束时,模型被保存。
  • 第二个批处理应用程序(火花流)加载模型
    之前保存并在 kinesis 队列上收听。
  • 当一个新元素到达时,第二批应该执行
    训练(在增量模式下?!)不加载所有 200000 个元素
    以前只是使用模型和新元素。
  • 在训练结束时,更新的模型被保存。
  • 问题是,是否可以以某种方式执行第 4 步?


    我的理解是,只有设计用于支持流式训练的机器学习算法(如 StreamingKMeans 或 StreamingLogisticRegressionWithSGD)才有可能。

    引用他们的文档(参见上面的活动参考):

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

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

    让我担心算法的是它们属于现在已弃用的 org.apache.spark.mllib.clustering 包(因为它是基于 RDD 而不是基于 DataFrame)。我不知道他们是否有他们的 JIRA 来使用 DataFrame 对其进行改造。