【发布时间】:2017-07-31 21:22:48
【问题描述】:
假设这种情况:
我们分析数据,使用我们手头的任何工具训练一些机器学习模型,然后保存这些模型。这是在 Python 中使用 Apache Spark python shell 和 API 完成的。我们知道 Apache Spark 擅长批处理,因此是 aboce 场景的不错选择。
现在进入生产阶段,对于每个给定的请求,我们需要返回一个响应,该响应也取决于训练模型的输出。我认为这就是人们所说的流处理,通常推荐使用 Apache Flink。但是,您将如何在 Flink 管道中使用使用 Python 中可用的工具训练的相同模型?
Spark 的微批处理模式在这里行不通,因为我们确实需要响应每个请求,而不是批量响应。
我也看到一些库试图在 Flink 中进行机器学习,但这并不能满足那些在 Python 而不是 Scala 中有多种工具,甚至不熟悉 Scala 的人的需求。
所以问题是,人们如何解决这个问题?
This 问题是相关的,但不是重复的,因为那里的作者明确提到使用 Spark MLlib。该库在 JVM 上运行,并且更有可能移植到其他基于 JVM 的平台。但这里的问题是,如果人们使用scikit-learn、GPy 或他们使用的任何其他方法/包,他们将如何处理它。
【问题讨论】:
-
可以不连接流处理。看到这个问题:stackoverflow.com/questions/40533582/… Flink 推荐实时,毫秒级的响应,但如果你可以等待,即一秒来处理更大的 mini-batches,Spark 非常好。但是我建议保存模型,然后通过其他库提供它
标签: python rest apache-spark apache-flink