Java 如何将spark模型部署到spring boot微服务中

Java 如何将spark模型部署到spring boot微服务中,java,spring-boot,apache-spark,apache-spark-mllib,Java,Spring Boot,Apache Spark,Apache Spark Mllib,我想创建一个使用spring boot的微服务,它能够提供使用以前培训过的ALS模型提出的建议。(使用apache spark mllib进行协同过滤) AlsModel是在完全独立的环境中训练的,不适合生产用例。我们有方法将存储在hdfs中的文件或数据传输到我们的服务层(作为文件或传输sql数据库中的数据)。 我知道我可以保存用户和项目特征数据帧,传输它们,然后自己计算预测,但我希望有一个更简单的解决方案,能够很好地处理定期更新。在我看来,过程如下: 在spark cluster内训练模型

我想创建一个使用spring boot的微服务,它能够提供使用以前培训过的ALS模型提出的建议。(使用apache spark mllib进行协同过滤) AlsModel是在完全独立的环境中训练的,不适合生产用例。我们有方法将存储在hdfs中的文件或数据传输到我们的服务层(作为文件或传输sql数据库中的数据)。 我知道我可以保存用户和项目特征数据帧,传输它们,然后自己计算预测,但我希望有一个更简单的解决方案,能够很好地处理定期更新。在我看来,过程如下:

  • 在spark cluster内训练模型
  • 将模型保存到文件(pmml格式??)
  • 将文件传输到服务层
  • springbootmicroservice只是在一些框架的帮助下加载文件(这不会引入spark依赖项)
  • 享受春天的靴子,让一切变得简单;-)
如果您不想在spring boot应用程序中包含spark lib

你可以试试

部署机器学习数据管道和算法不应该是一项耗时或困难的任务。MLeap允许数据科学家和工程师将Spark和Scikit learn的机器学习管道部署到便携式格式和执行引擎

所以您可以使用mleap来读取spark模型,并在spring boot应用程序中使用它

有关更多用例,您可以查看此项目。
Amazon SageMaker还开发了一个完全基于Java的服务设置,由mleap运行时提供支持。您有两种可能的解决方案:

1) 使用SpringBoot应用程序并创建微服务,微服务内部使用rest模板并向ApacheLivy发出rest调用

2) 选项2您可以创建springboot应用程序,在内部使用ApacheSpark并运行您的作业,但在这里您可以有一些限制


谢谢。了解sagemaker有助于理解如何使用mleap!谢谢你的回答。由于我们尝试了选项2,我们发现在我们的应用程序中运行本机spark对于我们的用例来说有太大的延迟。选项1在运行时的开销似乎更大。您是否有任何延迟的经验?最佳情况使用apache spark作为处理引擎处理数据并转储到任何存储中,并从数据存储中公开您的微服务,我正在尝试spark stream和sparing webflux将数据输入机器学习模型。