问题描述
尝试使用Dataflow sql进行流摄取:
我们有一个Pubsub主题(源)和BigQuery表(接收器)。
要实现这一点,我们需要执行以下步骤:
-
问题:我们可以使用命令行选项自动执行此过程吗?
-
使用
gcloud dataflow query
命令编写sql进行转换和执行(帮助我们进行动态查询和自动化)。问题:假设我们缺少Pubsub消息中的密钥,并且管道会将这些消息标记为堆栈驱动程序中的错误。 我们是否可以添加一些功能,例如如果架构验证失败,则移至表
y
,否则移至表x
?就像这样,如果我们收到消息类型y
,则移动表y
,否则移动表x
?
解决方法
您可以使用gcloud
将架构添加到主题。实际上,这实际上是唯一的方法,https://cloud.google.com/dataflow/docs/guides/sql/data-sources-destinations#gcloud
为保存无法解析为SQL行的消息,该功能通常称为“死信队列”。在用于Pubsub的Beam SQL DDL中可用,但在通过BigQuery UI使用Dataflow SQL时尚不可用。参见https://beam.apache.org/documentation/dsls/sql/extensions/create-external-table/#pubsub