如何将 JSON 数据发布到 PubSub,然后推送到 BigQuery?

Posted

技术标签:

【中文标题】如何将 JSON 数据发布到 PubSub,然后推送到 BigQuery?【英文标题】:How to publish JSON data into PubSub and then push to BigQuery? 【发布时间】:2021-07-19 12:12:17 【问题描述】:

我正在获取 JSON 格式的 twitter 数据,并且我想将该数据(相同的 JSON 格式)推送到 PubSub 主题中。我可以在主题中发布数据,但是当我尝试将数据推送到BigQuery 时,它会将数据存储到“Error record table”中(我已经创建了具有正确架构的BigQuery 表并给出了table_id 和@ 987654325@ 为credentials)

【问题讨论】:

您能否提供有关将数据从 pubsub 发送到 BigQuery 的设置的更多详细信息? 另外,为什么不直接将数据从 twitter 读取后发送到 BigQuery? 您的 Twitter 消息结构是什么?您在 BigQuery 中的模型是什么?以及如何将它们存储在 BigQuery 中(你能分享你的代码吗?)。? 【参考方案1】:

问题可能是由于以下原因:

1] 目标表架构和以 JSON 格式指定的表架构不同。

2] 列的数据类型和JSON格式指定的数据类型不同。

可以采取以下纠正措施:

1] 为了解决架构不匹配问题,请确保匹配 JSON 和目标表架构。在创建架构时,请尝试按照文档 [1] 中提到的这些步骤进行操作,该文档解释了如何指定 BigQuery 表的架构。

2] 由于数据类型不匹配,请尝试确保指定正确的数据类型。

考虑以下 JSON 架构:

"message":"hi","id":65,marks:89.8

在上面的例子中,message=string,id=integer,marks=float

所以任何数据类型的不匹配,消息都会被发布到错误记录表中。

参考资料:

[1]https://cloud.google.com/bigquery/docs/schemas

[2]https://cloud.google.com/bigquery/docs/error-messages#metadata-errors-for-streaming-inserts

[3]https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#cloudpubsubtobigquery

【讨论】:

以上是关于如何将 JSON 数据发布到 PubSub,然后推送到 BigQuery?的主要内容,如果未能解决你的问题,请参考以下文章

来自/到 pubsub 和 websocket 的实时转换推送到客户端

JSON 数据作为 PubSub 的消息

如何在 apache camel 中执行 gcp pubsub 消息的并行处理

Pubsub 推送拉取订阅

如何正确接收 Pubsub JSON 数据?

如何将 JSON 对象数组发布到 mongodb?