【发布时间】:2016-10-18 10:49:55
【问题描述】:
是否有可能创建BigQueryIO.Write-like sink 指定函数以返回表模式(或者最好从侧面输入中读取)?
在我的用例中,我从 PubSub 获取消息,这些消息已转换为 TableRow。消息可以有不同的模式,总是向后兼容。
在我的管道中,我能够为特定窗口创建最新架构,并且此类架构需要在写入 BigQuery 的接收器中使用。
SDK 中是否有可能提供此类功能? ;)
【问题讨论】:
-
Marcin,您希望架构多久更改一次?
-
我不知道。这意味着是自动的,因为我们向最终用户公开了用于更改架构的 UI。出于这个原因,我们希望消除此处所需的所有手动工作。
-
(要明确回答原始问题,SDK 中不提供此功能。)是否可以通过 UI 使用的任何代码路径触发架构更新?与消息处理的即时更新相比,这似乎没有那么激烈。
-
该解决方案如何提供帮助,因为 BigQueryIO.Write 需要在将数据写入 BigQuery 期间使用的架构?另一方面,我们可以停止当前的 Dataflow Pipeline 并启动新的管道,将最新的模式传递给它(这是我现在正在做的方式)。我们还可以创建一个“多路分解器”,它将消息从一个 PubSub 主题分离到 N 个按模式分组并具有 N 个管道,但这会使成本加倍。在一个管道中使用“动态模式”的全部意义在于消除管道重启的麻烦。
-
我可能弄错了,但我的理解是写入 BigQuery 的数据在流式传输时未针对架构进行验证。这是一个流式管道,对吗?