在GCP上使用python numpy和pandas部署小批量作业

时间:2019-10-12 05:52:45

标签: python pandas google-cloud-platform batch-processing google-cloud-dataflow

我有一个日常的小型计算工作,可以从BigQuery导入数据,使用Python数值计算库(pandas,numpy)进行处理,然后将结果写入外部表(另一个项目的Firestore或MySQL)

在GCP上部署它的推荐方法是什么?

我们的开发人员建议不要创建仅用于批处理作业的虚拟机。他们希望自己不要管理VM基础结构,并且应该有支持批处理作业的服务。他们坚持认为我使用Dataflow。但是我认为Dataflow的分布式特性有点过大。

非常感谢,


2019年10月14日更新:

我正在考虑将批处理作业进行码头化并部署到K8集群。缺点是群集应承载多个作业,值得进行设置和维护。有人可以给我建议这种方法的可行性和适用性吗?


2019年10月15日更新:

感谢Alex Titov在https://googlecloud-community.slack.com/archives/C0G6VB4UE/p1571032864020000发表的评论。根据他的建议,我将把工作分解为多个小型Cloud Functions组件,并通过Cloud Scheduler和/或Cloud Composer将它们作为管道链接在一起。

2 个答案:

答案 0 :(得分:2)

Cloud Dataflow完全满足您的需求,因此比VM更易于管理,扩展和构建。事先只问自己几个问题,如果不适用,请使用Dataflow:

  • 是否要限制为特定的云提供商(在这种情况下为GCP)
  • 在此项目中,是否使用了其他云服务,或者它们仅使用云中的基础结构(保持一致性)。我们还希望项目朝哪个方向发展? (使用自定义或云解决方案)
  • 我是否希望对该批处理软件处理工具进行绝对控制?如果是这样,您可能无法在Dataflow中使用它
  • 其他考虑因素,例如成本,部署时间,启动时间

如果所有答案都倾向于云服务,请使用它。

答案 1 :(得分:0)

如果您将工作容器化,则有2种无服务器的解决方案来运行它。每天,如果Cloud Run可以持续15分钟以上(在路线图中,但没有发布日期),则将提供第3个

  1. 使用Cloud Build。考虑正确设置timeout。实际上,Cloud Build是为运行任何容器而设计的。我wrote an article on this

  2. 使用AI-Platform。一位(出色的)Google员工有released an article on this

这两种解决方案都很棒,您可以选择运行容器的基础VM的机器类型。因此,您不必管理K8S集群,也可以在不使用它时为其付费。