我正在使用Dataflow将事件从PubSub流式传输到BigQuery。我看到在GCP中有两个用于执行此操作的模板:一个是Dataflow从某个主题读取消息的模板;另一个是还有一个来自订阅。
在这里使用订阅而不是仅使用主题中的事件有什么好处?
答案 0 :(得分:2)
核心概念
主题::发布者向其发送消息的命名资源。
订阅:一种命名资源,代表来自单个特定主题的消息流,该消息流将传递给订阅 应用程序。
根据核心概念,区别非常简单:
当您要发布消息从数据流到发布/订阅(实际上是给定主题)时,请使用主题。
< / li>要使用来自数据流中发布/订阅的邮件,请使用订阅。
因此,就您而言,请订阅。
更多信息:
请注意,Pub / Sub使用自己的消息存储库来管理主题。但是,当您同时希望在BigQuery中移动这些消息(并最终执行自己的分析)时, BigQuery的Cloud Pub / Sub主题模板特别有用。
BigQuery模板的Cloud Pub / Sub主题是流传输管道 从Cloud Pub / Sub主题读取JSON格式的消息,然后 将它们写入BigQuery表。您可以快速使用模板 将Cloud Pub / Sub数据移至BigQuery的解决方案。模板读取 来自Cloud Pub / Sub的JSON格式的消息并将其转换为 BigQuery元素。
https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#cloudpubsubtobigquery
答案 1 :(得分:1)
“ BigQuery主题”和“ BigQuery订阅”这两个模板都会使用Pub / Sub中的消息,并将其流式传输到BigQuery中。
如果您使用从主题到BigQuery模板,则Dataflow会在后台为您创建一个从指定主题读取的订阅。如果您使用Subscription to BigQuery模板,则需要提供自己的订阅。
您可以通过创建从同一主题读取的多个连接到订阅的BigQuery管道,使用“订阅到BigQuery模板”来模拟“主题到BigQuery”模板的行为。
对于新部署,首选使用Subscription to BigQuery模板。如果使用Topic to BigQuery模板停止并重新启动管道,则会创建新的订阅,这可能会导致您丢失一些在管道关闭时发布的消息。订阅BigQuery模板没有此缺点,因为即使重新启动管道后,它也使用相同的订阅。