据我所知,将数据流式传输到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传输数据
答案 0 :(得分:5)
使用Google Dataflow和PubSub,您可以完全控制流数据,您可以实时切片和切块数据并实现自己的业务逻辑,最后将其写入BigQuery表。另一方面,使用其他方法使用BigQuery作业直接将数据流传输到BigQuery,您绝对无法控制数据。
优缺点实际上取决于您对流数据的需求。如果您正在进行平面插入,则不需要Dataflow,但如果您需要一些严格的计算,例如按键分组,合并,分区,对流数据进行求和,则可能Dataflow将是最佳方法。需要记住的是成本,一旦你开始向PubSub注入大量数据并使用数据流来操纵那些开始变得昂贵的数据。
要回答您的问题,是的,您可以使用Dataflow消除重复的行。由于Dataflow完全控制数据您可以使用管道过滤器检查满足重复值的任何条件。我使用Dataflow管道的当前场景是实时操作我的客户日志记录,使用Dataflow和通过PubSub传递的日志流进行严格的预聚合。 Dataflow对于批处理和流数据操作都非常强大。希望这会有所帮助。