火花|对于同步请求/响应用例

时间:2018-01-08 05:35:44

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

Spark新手警报。我一直在探索设计需求的想法,其中涉及以下内容:

  1. 为线性回归构建基本预测模型(一次性活动)
  2. 传递数据点以获取响应变量的值。
  3. 对结果做点什么。
  4. 定期更新模型。
  5. 这必须在sync(req / resp)模式下完成,以便调用者代码调用预测代码,获得结果并继续下游。调用者代码在spark之外(它是一个webapp)。

    我很难理解Spark / Spark Streaming是否适合进行线性回归纯粹因为它是异步性质。

    根据我的理解,它只是一个Job Paradigm的工作,你告诉它一个源(DB,Queue等),它进行计算并将结果推送到目的地(DB,Queue,File等)。我看不到可用于获取结果的HTTP / Rest接口。

    Spark是我的正确选择吗?或者有更好的想法来解决这个问题吗?

    感谢。

1 个答案:

答案 0 :(得分:0)

如果我做对了,那么一般来说你必须解决三个基本问题:

  1. 构建模型
  2. 使用该模型执行每个同步http的预测 请求(对于这样的得分或smth)从外面(在你的 这将是webapp)
  3. 更新模型以使其更精确 在某个时间间隔内
  4. 通常,Spark是一个以管道方式对某些数据集执行分布式批量计算的平台。因此,通过工作范式,你是对的。 Job实际上是一个由Spark执行并具有开始和结束操作的管道。您将获得诸如集群中的分布式工作负载和有效资源利用率等优点(与其他此类平台和框架相比)由于数据分离而允许在狭窄操作中执行并行执行的性能。

    因此,对我来说,正确的解决方案是使用Spark来构建和更新您的模型,然后将其导出到其他解决方案中,该解决方案将满足您的请求并使用此模型进行预测。

      

    对结果做点什么

    在第3步中,您可以使用kafka和spark streaming传递更正的结果并更新模型的精度。

    一些有用的链接可能会有所帮助:

    https://www.phdata.io/exploring-spark-mllib-part-4-exporting-the-model-for-use-outside-of-spark/

    https://datascience.stackexchange.com/questions/13028/loading-and-querying-a-spark-machine-learning-model-outside-of-spark

    http://openscoring.io/blog/2016/07/04/sparkml_realtime_prediction_rest_approach/