首页 > 解决方案 > 是否可以在 Spark 集群之上构建 REST API 接口?

问题描述

本质上,我们使用 AWS 上的 Spark EMR 集群运行批处理 ML 模型。模型将进行多次迭代,因此我们希望在 Spark 集群之上拥有某种模型元数据端点。通过这种方式,依赖 EMR 集群输出的其他服务可以 ping Spark 集群的 REST API 端点,并获知它正在使用的最新 ML 系统版本。我不确定这是否可行。

客观的:

我们希望其他服务能够 ping 通运行最新 ML 模型的 EMR 集群并获取模型的元数据,其中包括 ML 系统版本。

标签: amazon-web-servicesrestapache-sparkamazon-emr

解决方案


如果我理解正确,您想在 spark 作业完成后在某处添加元数据(例如,版本、上次更新、执行的操作等),对吗?

可能有多种可能性,并且所有可能性都会以与其他任务相同的方式以某种方式集成到您的数据管道中,例如,使用工作流管理工具(airflow/luigi)、lambda 函数甚至 cron 触发 spark 作业。

Spark 作业运行后更新元数据

因此,对于 post spark 作业步骤,您可以在管道中添加一些内容,将此元数据添加到某个数据库或事件存储中。我正在分享选项,您可以决定哪个更可行

  1. 利用 cloudwatch 事件并将 lambda 与事件相关联。Amazon EMR 自动将事件发送到 CloudWatch 事件流
  2. 在您的工作流管理工具 (airflow/luigi) 中添加一个步骤,该步骤触发 EMR 步骤功能的数据库/事件存储更新步骤/操作员“完成时”。(例如,EmrStepSensor在 Airflow 中使用来发出写入 DB 的下一步,这取决于)

对于数据库/事件存储之上的 Rest-api

现在,一旦您为每个 emr spark 步骤运行设置了定期更新机制,您就可以使用EC2serverless API using AWS lambda. 您实际上将从其余服务返回此元数据。


推荐阅读