Pub/Sub Topic转BigQuery订阅:address字段无法写入问题求助
解决Pub/Sub Map字段写入BigQuery失败问题
问题根源
你的Pub/Sub主题Schema中address是map<string, string>类型,之前使用的BigQuery表结构类型不匹配,导致写入失败:
- 用
ARRAY<STRUCT<a STRING, b STRING>>:Pub/Sub的map会被解析为key/value字段的键值对数组,而非a/b,字段名不匹配 - 用
JSON类型:启用「Use Topic Schema」后,Pub/Sub会推送结构化解析后的数据,而非原始JSON字符串,类型不兼容
正确的表结构方案
方案1:使用BigQuery MAP类型(推荐)
直接匹配Pub/Sub的map类型,表结构如下:
CREATE TABLE `dataset.tablename` ( name STRING OPTIONS(description=""), phone STRING OPTIONS(description=""), address MAP<STRING, STRING> );
方案2:使用键值对数组(兼容旧版本)
如果你的BigQuery环境不支持MAP类型,可使用包含key和value字段的结构体数组,匹配Pub/Sub的map解析格式:
CREATE TABLE `dataset.tablename` ( name STRING OPTIONS(description=""), phone STRING OPTIONS(description=""), address ARRAY<STRUCT<key STRING, value STRING>> );
验证说明
两种方案都能让「Write To BigQuery」订阅正确解析address字段,配合你已选择的「Use Topic Schema」和「Drop Unknown fields」选项,数据可正常写入BigQuery表。
内容的提问来源于stack exchange,提问作者Sridhar Srinivasan
相关产品推荐
相关产品推荐

