对于数据处理任务,建议使用什么GCP选项?

问题描述 投票:0回答:1

有多种方法可以在GCP平台上执行长时间的后台任务。我正在寻找最合适,最直接的解决方案来执行数据处理任务(清理原始csv文件并将其推入bigquery)。我探索并尝试过的选项:

1。具有Pub / Sub的云函数:对于每个传入的文件,执行一个隔离的函数,该函数将单个文件清除并将其存储到BigQuery。

  • Pro:易于设置,非常适合并行请求(例如,发送带有1000个文件的Pub / Sub 1000个请求),集成了错误报告。
  • 缺点:单个任务的最长持续时间10分钟,随着Ghz消耗的增加,可能会很昂贵

2。数据流:创建管道并使用云函数事件结合Pub / Sub触发它

  • Pro:似乎能够处理繁重的计算问题,并且名称/说明表明其旨在建立适当的数据处理管道。
  • 缺点:我个人认为对于单个执行来说启动时间很长。例如,进行批处理时。我想我需要流处理来加快速度。我发现的最大问题是,与Cloud Functions和App Engine相比,正确地设置它(包括监视错误)似乎很复杂(涉及许多步骤)。对于仅处理文件而言,似乎需要大量工作,而且我不了解用法-对此获得一些反馈将很有帮助。

3。 [App Engine and Cloud Tasks:创建一个烧瓶应用程序,其中包含一个路由和参数(例如,文件路径),该路径和参数在被调用时会处理单个文件,类似于GCF逻辑。使用“云任务”运行异步请求后台任务。

  • Pro:可以处理大内存计算和长时间任务。易于设置和部署更改。在Flex环境中自动放大。
  • 缺点:我很困惑,您需要设置一个flask应用程序,因此怀疑它是否打算像我正在使用的目的那样使用?这个名字也引起混乱。

4。计算引擎和云任务:与App Engine相同,但具有固定的非自动可伸缩VM]

  • Pro:可能比App Engine便宜
  • 缺点:没有自动缩放功能(除非您进行了设置)。我还发现设置部署计划需要做很多工作(与App Engine相对应,您可以在其中运行gcloud app deploy)

另一个令人困惑的地方是名称的概念。

  • 从命名开始,我会说我需要数据流(批量处理和流式处理数据)或计算引擎(计算或处理文件)
  • 但是,从使用角度来看,我发现Cloud Functions和App Engine更易于使用(无需担心容量,自动扩展和更改部署更容易/设置方式更容易。]

因此,我对应该采取的解决方案感到困惑。有什么经验或建议吗?

[如果您仔细阅读这些内容,我想我实际上要问的是,如上所述,在App Engine上设置flask应用程序是否是该解决方案处理数据相关任务的预期用例之一。

google-app-engine google-cloud-platform google-cloud-functions google-compute-engine google-cloud-dataflow
1个回答
0
投票

所有解决方案各有优缺点。>>

数据流似乎很自然。

如果对这个用例很重要,那么另外一些考虑将是文件处理一次。除数据流以外的其他系统可能无法严格保证操作的幂等性。

我认为要求类似于

从PubSub读取文件名->加载文件->解析和转换文件->写入BQ

Dataflow也有一些模板,无需进行设置即可直接使用,但不幸的是,没有用于此确切用例的模板。

此外,由于这是一个长期运行的管道,因此Dataflow当然可以帮助维护和发展该管道。

© www.soinside.com 2019 - 2024. All rights reserved.