你正在比较两个相当不同的东西。 Apache Spark是一个计算引擎,虽然您提到亚马逊和Microsoft解决方案正在提供服务。这些服务也可能在场景背后有Spark和MLlib。它们可以帮助您免于自己构建Web服务的麻烦,但您需要额外付费。
Domino Data Lab,Cloudera或IBM等公司提供的产品可以在您自己的Spark集群上部署,并可以轻松地在您的模型周围构建服务(具有不同程度的灵活性)。
当然,您可以使用各种开源工具自行构建服务。具体哪个?这一切都取决于你所追求的。用户应该如何与模型交互?是否应该有某种UI或jest REST API?您是否需要更改模型或模型本身的某些参数?这些工作更多是批量还是实时性质?您可以自然地构建一体化解决方案,但这将是一项巨大的努力。
我个人的建议是,如果可以的话,可以利用亚马逊,谷歌,微软或其他任何可用的服务。需要内部部署吗?检查Domino Data Lab,他们的产品已经成熟,可以轻松使用模型(从构建到部署)。 Cloudera更专注于集群计算(包括Spark),但在成熟之前需要一段时间。
[编辑]我建议你去看看 Apache PredictionIO ,开源机器学习服务器 - 具有很多潜力的惊人项目。
一种选择是使用 MLeap 在线提供Spark PipelineModel 不依赖于Spark / SparkContext 。不必使用SparkContext很重要,因为它会将单个记录的得分时间从~100ms减少到 的 单位数微秒 强> 。
要使用它,您必须:
MLeap与Spark MLlib中提供的所有管道阶段(在撰写本文时除了LDA之外)完美集成。但是,如果您使用自定义Estimators / Transformers,事情可能会变得复杂一些。
看看吧 MLeap FAQ 有关自定义变压器/估算器,性能和集成的更多信息。