有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板处理每条消息的多个记录?
Posted
技术标签:
【中文标题】有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板处理每条消息的多个记录?【英文标题】:Is there a way to get the Pub/Sub -> Dataflow -> BigQuery template to cope with multiple records per message? 【发布时间】:2021-11-20 14:49:22 【问题描述】:我有一些应用程序向 Pub/Sub 发布消息,每条消息将包含一个或多个事件。例如
...pub/sub headers...
"data": "\"event\":\"event1\",\"key1\":\"value1\",\"key2\":\"value2\"\n\"event\":\"event2\",\"key1\":\"value1\",\"key2\":\"value2\"\n\"event\":\"event3\",\"key1\":\"value1\",\"key2\":\"value2\""
我希望在 BigQuery 中得到如下数据:
event | key1 | key2
event1 | value1 | value2
event2 | value1 | value2
event3 | value1 | value2
我需要将这些事件存储在 BigQuery 中,并且可用的模板看起来应该非常合适。但是,我陷入了问题的“更多”事件部分。
我有一个非常简单的 javascript UDF,它对入站消息进行了一些预处理,但我一生都无法弄清楚什么格式(如果有的话)将使 Dataflow 的其余部分工作对该 UDF 的输出表示要保存到 BigQuery 的多条记录这一事实感到高兴。
在不创建自定义数据流作业的情况下,我正在尝试的事情是否可行?
【问题讨论】:
【参考方案1】:在 PubSub to Bigquery 数据流模板中,它需要一个条目并写入 1 个对应的行。你不能扇出行数(我没试过,但在代码中,这似乎是不可能的)。
您可以构建自定义数据流(您可以从 existing template 开始。
或者,这是首选方式,您可以使用 bigquery 查询对数据流管道进行后期处理。
【讨论】:
感谢您的确认。我同样害怕。感谢您的反馈!以上是关于有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板处理每条消息的多个记录?的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Functions 无法使用 Pub/Sub 死信主题
Pub/Sub:似乎无法让本地模拟器与 Node.js 一起使用