是否可以在 Spark 集群之上构建 REST API 接口?

Is it Possible to Build a REST API interface on top of the Spark Cluster?

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

Objective:

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

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

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

在 Spark 作业后更新元数据 运行s

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

  1. 利用 cloudwatch 事件并将 lambda 与事件相关联。 Amazon EMR automatically sends events to a CloudWatch event stream
  2. 在您的工作流管理工具 (airflow/luigi) 中添加一个步骤,触发 DB/event-store 更新 step/operator EMR 步骤功能的“完成时”。 (例如,在 Airflow 中使用 EmrStepSensor 来根据此发出写入数据库的下一步)

休息-api 在 DB/event 商店之上

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