将数据流式传输到 Bigquery 与将数据上传到 PubSub,然后使用数据流将数据插入到 Bigquery 之间的优缺点是什么

What are the pros&cons between streaming data to Bigquery vs upload data to PubSub and then using data flow to insert data to Bigquery

据我所知,将数据流式传输到 BigQuery 会导致重复行,正如它在此处提到的 https://cloud.google.com/bigquery/streaming-data-into-bigquery#real-time_dashboards_and_queries

另一方面,将数据上传到PubSub,然后使用数据流向Bigquery插入数据,是否可以避免重复行?。这里还有实时数据分析的教程https://cloud.google.com/solutions/real-time/fluentd-bigquery

那么其他优点和缺点是什么,在什么情况下我应该使用数据流从 PubSub 流式传输数据

借助 Google Dataflow 和 PubSub,您将可以完全控制流数据,可以实时对数据进行切片和切块,实现自己的业务逻辑,最后将其写入 BigQuery table。另一方面,使用其他方法使用 BigQuery 作业将数据直接流式传输到 BigQuery,您肯定会失去对数据的控制。

优缺点实际上取决于您需要对流数据执行的操作。如果您正在进行平面插入,则不需要数据流,但如果您需要一些严肃的计算,如按键分组、合并、分区、对流数据求和,那么数据流可能是最好的方法。要记住的是成本,一旦您开始向 PubSub 注入大量数据并使用数据流来操作这些数据,它就会开始变得昂贵。

为了回答您的问题,是的,您可以使用 Dataflow 消除重复行。由于 Dataflow 可以完全控制数据,您可以使用管道过滤器来检查满足重复值的任何条件。我使用 Dataflow 管道的当前场景是通过使用 Dataflow 和通过 PubSub 传递的日志流进行认真的预聚合来实时处理我的客户日志记录。 Dataflow 对于批处理和流式数据操作都非常强大。希望这有帮助。