如何将 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 的实时转换推送到客户端