GCP - 创建数据流(发布/订阅 - >预测(ML 模型)> BigQuery/Firebase)



我是 GCP 的新手,我想为我的项目创建一个数据流。长话短说,我的设备将数据发送到 Pub/Sub,之后,我想使用 ML 模型进行预测,然后将所有这些输出到 BigQuery 和实时 firebase 数据库。我从谷歌找到了这篇文章(我看了 Stream + 微批处理,但未能实现它(和这个 github 存储库,但我真的不知道如何运行它,如果有人能帮我一把,我将不胜感激。

使用云功能实现所有这些会更容易吗?

有几种方法可以解决您的用例。

首先,我不确定是否需要数据流。数据流非常适合本文中所述的数据转换或数据比较,但我不确定这是您的用例。如果是这样,这里有几个建议(如果你愿意,我们可以深入研究一个(

  • 更便宜的不可扩展:在您的 PubSub 主题上设置拉订阅。然后,设置一个云调度程序,每 2 分钟调用一次 HTTP 服务(如云函数或云运行(。HTTP 服务将拉取订阅。对于每条消息,它执行预测并将结果存储在内存中(在数组中(。处理完所有消息后,您可以在 BigQuery 中执行加载作业(或在数据存储中批量插入(。

此解决方案更便宜,因为您可以按微批处理处理消息(处理时间更有效(,并且将加载作业执行到 BigQuery 中(与流式处理相比是免费的(。但是,它不可缩放,因为在触发加载作业之前将数据保留在内存中。如果你有越来越多的数据,你可以达到2Gb的云运行或云功能的内存限制。增加调度程序频率不是一种选择,因为您每天有 1000 个加载作业的配额(1 天 = 1440 分钟 ->因此,不可能每分钟都这样做(。

  • 更简单的是最昂贵的:在您的pubSub上插入HTTP服务(Cloud Run或Cloud Function ->Cloud Run仅适用于推送订阅,Cloud Function适用于拉取和推送订阅(。在每条消息上,将调用 HTTP 服务并执行预测,然后将写入流式传输到 BigQuery

此解决方案具有高度可扩展性,也是最昂贵的解决方案。我建议您使用 Cloud Run,它允许同时处理多条消息,从而减少计费实例处理时间。(我为此写了一篇文章(

最终,如果您不必尽快处理消息,最好的选择是混合执行两者: 安排微批处理以拉取 pubsub 拉取订阅。对于每条消息执行预测并流式写入 BigQuery(以防止内存溢出(。

如果您确实需要在流程中使用数据流,请详细描述您想要实现的目标以获得更好的建议。

无论如何,我同意@JohnHanley的评论,执行Qwiklabs以了解您可以使用该平台做什么!

最新更新