从pubsub-> bigquery移至pubsub-> gcs(avro)-> bigquery

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

我们当前的数据管道将事件直接“流”送到bigquery。我们在pubsub中有一条消息流,我们首先使用数据流读取,填充并写入其他pubsub主题,然后使用另一个数据流作业读取它,然后写入bigquery。它可以正常工作,但不支持正确的错误处理-我们只是丢弃无效的消息,而不是处理它们,或者至少将它们保存以备后用。我们正在考虑增强流程,将无效的消息放在一边,并在以后允许对其进行简单的修复。我的第一种方法是将这些有问题的消息写到另一个pubsub主题中,然后从那里进行处理,但是很少有人建议将其保存到GCS(可能是AVRO文件)中。问题是:如果我们使用GCS和AVRO,为什么不对所有消息使用它?除了丰富和编写pubsub之外,为什么不丰富和编写GCS?如果这样做,我们可以使用AVROIO()watchForNewFiles()一起使用,这似乎很简单。但这听起来太简单了,太好了。在开始编码之前,我会担心一些事情:

  • 我知道在数据流上使用Windows使流式处理成为批处理数据,但是它比每个X检查新文件要灵活得多分钟。例如,我将如何处理最新数据等?
  • [工作无休止地进行,AVRO文件将被堆放在一个存储桶中,watchForNewFiles()假设可以正常工作?它会基于文件时间戳吗?命名格式?保持“清单”已知的旧文件?读FileIO代码,看来方法是天真,这意味着水桶越大,水桶越长比赛进行。

我想念什么吗?这种解决方案是否比pubsub更适合无休止的流式传输?

google-bigquery google-cloud-dataflow apache-beam google-cloud-pubsub
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.