【问题标题】:Spark Structured Streaming and Spark-Ml RegressionSpark 结构化流和 Spark-Ml 回归
【发布时间】:2018-01-14 19:43:35
【问题描述】:

是否可以将 Spark-Ml 回归应用于流式源?我看到有 StreamingLogisticRegressionWithSGD 但它适用于较旧的 RDD API,我 couldn't 将它与结构化流式源一起使用。

  1. 我应该如何对结构化流媒体源应用回归?
  2. (有点 OT)如果我不能使用流式 API 进行回归,我如何以批处理方式提交偏移量左右源? (卡夫卡水槽)

【问题讨论】:

    标签: apache-spark apache-spark-sql apache-spark-ml


    【解决方案1】:

    今天(Spark 2.2 / 2.3)在结构化流中不支持机器学习,并且在这个方向上没有正在进行的工作。请关注SPARK-16424 以跟踪未来的进展。

    但是你可以:

    • 使用 forEach 接收器和某种形式的外部状态存储来训练迭代的非分布式模型。在高级回归模型可以这样实现:

      • 在调用 ForeachWriter.open 时获取最新模型并为分区初始化损失累加器(不是 Spark 意义上的,只是局部变量)。
      • 计算ForeachWriter.process 中每条记录的损失并更新累加器。
      • 调用ForeachWriter.close 时,推送失败到外部存储。
      • 这将使外部存储负责计算梯度和更新模型,实现依赖于存储。
    • 尝试破解 SQL 查询(参见 https://github.com/holdenk/spark-structured-streaming-ml by Holden Karau

    【讨论】:

    • 谢谢。你能详细说明一下 forEach 方法吗?据我了解,这是一种对每个Row 执行某些操作(例如写入数据库)的方法。但是为了应用回归,我需要对数据集执行一些操作(训练和评估)。
    • 谢谢。我想我会放弃流 API,因为 计算梯度的外部存储 我觉得我不会从 spark-ml 获得任何帮助。
    • 没错,尽管听起来可能比实际情况更严重。毕竟对于 GD,它只是与任何体面的线性代数库的一条线。但是,如果您正在寻找结构化流中的内置支持,那么目前没有。
    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 2018-08-18
    • 2017-03-06
    • 1970-01-01
    • 2018-05-27
    • 2019-01-10
    • 2017-08-25
    • 2020-01-31
    相关资源
    最近更新 更多