You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Pub/Sub转BigQuery订阅数据写入异常排查求助

问题分析与解决

核心问题是Avro Schema字段类型与BigQuery表字段类型不匹配,导致非NULL值无法写入:

  • Avro里abc定义为["null","string"](可空字符串类型)
  • BigQuery表中abc是Integer类型

当你发送{"abc": {"string": "testdata"}}时,Pub/Sub的BigQuery订阅会尝试把Avro的string值转换成Integer,转换失败后直接丢弃这条数据;而null值因为两边都支持NULLABLE,所以能正常插入。

解决方案

你有两种可选的修正方向:

1. 调整Avro Schema匹配BigQuery字段类型

把Avro Schema里的abc类型改成可空的整数类型:

{"type": "record","name": "Sample","fields": [{"name": "abc","type": ["null","int"],"default": null}]}

之后发送符合整数类型的数据:

{"abc": {"int": 123}}

2. 修改BigQuery表字段类型匹配Avro Schema

把BigQuery表的abc字段类型从Integer改成STRING,这样Avro的string值就能直接映射写入,不需要类型转换。

额外注意事项

  • 如果必须保留当前Avro和BigQuery类型不匹配的情况,需要在数据发布前做类型转换(比如把字符串转成合法整数),否则订阅会持续丢弃不符合类型的数据。
  • 可以查看Pub/Sub订阅的死信队列或者监控指标(比如subscription/num_dead_letter_messages),确认是否有数据因转换失败被路由到死信队列,辅助排查问题。

内容的提问来源于stack exchange,提问作者Kiras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:31:51