GCP-创建数据流(Pub / Sub->预测(ML模型)-> BigQuery / Firebase)

时间:2019-11-25 17:29:13

标签: machine-learning google-cloud-platform google-bigquery google-cloud-pubsub dataflow

我是GCP的新手,我想为我的项目创建数据流。长话短说,我的设备将数据发送到Pub / Sub,然后,我想使用ML模型进行预测,然后将所有这些都输出到BigQuery和实时Firebase数据库。我发现了这个article from google(我看过Stream + Micro-batching,但是没有实现)和这个github repository,但是我真的不知道如何运行它,如果有人可以帮我会非常感激的。

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

1 个答案:

答案 0 :(得分:2)

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

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

  • 便宜的是不可扩展的:在您的PubSub主题上设置请求订阅。然后,设置每2分钟调用一次HTTP服务(例如Cloud Function或Cloud Run)的Cloud Scheduler。 HTTP服务将拉订阅。对于每条消息,它执行预测并将结果存储在内存中(在数组中)。处理完所有消息后,您将执行加载作业到BigQuery(或在数据存储区中批量插入)。

此解决方案比较便宜,因为您可以按批处理消息(处理时间效率更高),并且可以将加载作业执行到BigQuery中(与流传输相比是免费的)。但是,它不可扩展,因为您在触发加载作业之前将数据保留在内存中。如果数据越来越多,则可以达到Cloud Run或Cloud Function 2Gb的内存限制。不能选择增加调度程序的频率,因为您每天有1000个负载作业的配额(1天= 1440分钟->因此,不可能每分钟)。

  • 最简单的方法是最昂贵的方法:在您的pubSub上插入HTTP服务(Cloud Run或Cloud Function-> Cloud Run仅适用于推送订阅,Cloud Function适用于请求订阅和推送订阅)。在每条消息上,都会调用HTTP服务并执行预测,然后将数据流写入BigQuery

此解决方案具有高度的可扩展性,并且是最昂贵的解决方案。我建议您使用Cloud Run,它可以同时处理多个消息,从而减少可计费实例的处理时间。 (我写了an article on this

最终,如果您不必尽快处理消息,则最好的选择是同时执行这两种操作:调度微批处理以拉出pubsub pull订阅。为每条消息执行预测,并将流写入BigQuery(以防止内存溢出)。

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

无论如何,我都同意@JohnHanley的评论,请执行Qwiklabs以了解如何使用该平台!