【问题标题】:How can I deploy a spark AlsModel into a spring boot microservice如何将 Spark AlsModel 部署到 Spring Boot 微服务中
【发布时间】:2019-10-23 20:42:12
【问题描述】:

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

  • 在 spark 集群内训练模型
  • 将模型保存到文件(pmml 格式??)
  • 将文件传输到服务层
  • spring boot 微服务只是在一些框架的帮助下加载文件(不引入 spark 依赖项)
  • 享受 spring-boot 的神奇魔力,让一切变得轻松 ;-)

【问题讨论】:

    标签: java spring-boot apache-spark apache-spark-mllib


    【解决方案1】:

    如果您不想将 spark lib 包含到您的 Spring Boot 应用程序中。

    你可以试试mleap

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

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

    有关更多用例,您可以查看此项目sagemaker-sparkml-serving-container。 Amazon SageMaker 还开发了一个完全基于 Java 的服务设置,由 mleap-runtime 提供支持

    【讨论】:

    • 谢谢。了解 sagemaker 确实有助于理解如何使用 mleap!
    【解决方案2】:

    您有两种可能的解决方案:

    1) 使用 Spring boot 应用创建微服务,在微服务内部使用 rest 模板并调用 Apache Livy

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

    【讨论】:

    • 感谢您的回答。由于我们尝试了选项 2,我们发现在我们的应用程序中运行本机 spark 对我们的用例来说具有太大的延迟。选项 1 在运行时似乎有更大的开销。您对延迟有什么期望吗?
    • 最好的情况是使用 apache spark 作为处理引擎进程数据并转储到任何存储中并从数据存储中公开您的微服务,我正在尝试使用备用 webflux 将数据输入机器学习模型的 Spark 流。
    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2018-06-17
    • 2018-05-24
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多