Spark Newbie alert.我一直在探索设计需求的想法,其中包括以下内容:
- 为线性回归构建基本预测模型(一次性活动)
- 传递数据点以获取响应变量的值。
- 对结果做点什么。
- 定期更新模型。
这必须在同步(req/resp)模式下完成,以便调用方代码调用预测代码,获取结果并继续下游。调用方代码在 Spark 外部(它是一个 Web 应用程序)。
我正在努力理解Spark/Spark Streaming是否适合进行线性回归,纯粹是因为它的异步性质。
据我了解,它只是一种工作范式,你告诉它一个源(DB、队列等),它进行计算并将结果推送到目标(DB、队列、文件等)。我看不到可用于获取结果的HTTP/Rest接口。
Spark 是我的正确选择吗?或者有什么更好的想法来解决这个问题吗?
谢谢。
如果我做对了,那么一般来说你必须解决三个基本问题:
- 构建模型
- 使用该模型执行每个同步 http 的预测 从外部(在您的 如果这将是网络应用程序)
- 更新模型以使其更精确 在某个时间间隔内
通常,Spark 是一个以管道方式对某些数据集执行分布式批处理计算的平台。所以对于工作范式,你是对的。作业实际上是一个管道,将由 Spark 执行,并且具有开始和结束操作。由于数据分部允许在狭窄的操作中执行并行执行,您将获得诸如集群之间的分布式工作负载和有效资源利用率以及良好的(与其他此类平台和框架相比)性能等好处。
因此,对我来说,正确的解决方案是使用 Spark 构建和更新您的模型,然后将其导出到其他解决方案中,该解决方案将满足您的请求并使用此模型进行预测。
对结果做点什么
在步骤 3 中,可以使用 kafka 和火花流式处理来传递校正结果并更新模型的精度。
一些有用的链接可能会有所帮助:
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/