本页提供了一些常见的问题排查提示 。
检查 BigQuery 订阅的状态
如需查看订阅的状态,请执行以下步骤:
在 Google Cloud 控制台中,前往 Pub/Sub 订阅页面。
检查 BigQuery 订阅的状态图标。
如果该图标是绿色对勾标记,则表示订阅状况良好。
如果该图标是红色感叹号,则表示订阅处于错误状态。
点击 BigQuery 订阅。
系统会打开订阅详情页面。
检查订阅状态是否存在错误消息。
问题解决后,订阅最终会恢复为 运行状况良好。
无法创建或更新订阅
这里是你在遇到问题时可能会遇到的一些常见问题 创建或更新 BigQuery 订阅。
“未找到表”错误
您在创建或更新订阅工作流中指定的表 不存在,则工作流将返回“未找到表”错误。 在 Google Cloud 控制台中,消息类似于以下内容:
The BigQuery table or dataset specified cannot be found.
要解决此问题,请创建表并 确保您可以 其状态 然后再将其与 BigQuery 订阅搭配使用。
架构不匹配错误
如果表和主题的架构不兼容,则 创建或更新订阅工作流会返回架构不匹配错误。 在 Google Cloud 控制台中,消息类似于以下内容:
Incompatible schema type for field project_ids: expected INT64, got STRING
指定的错误消息是“project_ids
”字段的架构不匹配问题。
根据架构不匹配的情况,您可能
不同的版本。
如需解决此问题,请检查架构映射是否 兼容。
服务账号错误
如果您尚未使用 合适的权限 创建或更新订阅工作流会返回错误。 在 Google Cloud 控制台中,消息类似于以下内容:
Service account service-1234234234@gcp-sa-pubsub.iam.gserviceaccount.com
is missing permissions required to write to the BigQuery table:
bigquery.tables.get, bigquery.tables.updateData.
要解决此问题,请检查服务账号是否 正确的权限。
订阅状态显示红色感叹号
如果您在创建订阅后修改该表,则可能会影响 Pub/Sub 如何将消息写入表中。如果更改导致 那么订阅的状态字段就是 设置为错误状态。
在订阅详情页面中,检查 Subscription state
字段的状态。
Subscription state
字段提供更具体的错误,
可以是以下某一项:
当 Pub/Sub 订阅处于错误状态时,
消息不会写入 BigQuery 表,
订阅积压消息。请注意,邮件不会被递送到
附加的死信主题(如果已配置)。保留未确认的消息
在message_retention_duration
中设置的时间段(默认为 7 天)内按时返回。
积压的进度正在增加
如果您发现订阅中积压了一堆消息 转到订阅的死信主题,请查看以下内容, 原因。
INVALID_ARGUMENT 错误消息
如果提供的消息采用 Pub/Sub 格式 视为有效,但 BigQuery 目标表架构无效。 这意味着消息中的一个或多个字段值 BigQuery 表架构允许的值。查看 架构兼容性以验证 数据类型和格式正确无误。一些最常见的错误 包括:
空字符串 (
""
) 不是有效的 JSON。当将数据发送到可为 null 时 JSON BigQuery 表列,提供空的 JSON 对象({})
、null
,或表示缺失值的空 JSON 字符串("\"\"")
。正在发送 空字符串会导致错误。如果消息字段值超出了 BigQuery 字段的长度上限, 消息会因为大小限制而失败。
要排查 INVALID_ARGUMENT
错误,请将
死信主题
。死信主题会捕获
以及名为
CloudPubSubDeadLetterSourceDeliveryErrorMessage
解释失败原因。
在 Metrics Explorer 中也会看到这些传送失败事件。
选择指标“pubsub.googleapis.com/subscription/push_request_count
”并
过滤条件:response_code=invalid_argument
。
RESOURCE_EXHAUSTED 错误消息
如果消息写入 BigQuery 的速度缓慢,您可能需要
增加项目的 Pub/Sub 推送配额或 BigQuery 存储空间
写入吞吐量配额。如需检查是否遇到配额限制,请执行以下操作:
检查推送请求指标 (subscription/push_request_count
)
出现任何 resource_exhausted
错误。
诊断配额问题的另一种方法是查看项目的配额。导航
IAM 和管理 >Pub/Sub 所在项目中的配额
资源或 BigQuery 实例搜索相关配额。
pubsub.googleapis.com/regionalpushsubscriber
或
bigquerystorage.googleapis.com/write/append_bytes
。如果任一配额需要
您可以申请更高配额。
每小时分区表在分区 ID 列中显示 __UNPARTITIONED__
如果 BigQuery 目标表是按小时分区,则行
最初会进入名为 __UNPARTITIONED__
的特殊分区,该分区位于
INFORMATION_SCHEMA.PARTITIONS
个视图。
对于使用提取时间分区的表来说,这是预期行为。
BigQuery 采用流式缓冲区来优化写入过程。
在有足够的卷之前,数据可能会保留在 __UNPARTITIONED__
分区中
累计或至少已过去一小时。满足这些条件后
BigQuery 会将数据重新分区到相应的每小时分区。
您可以使用__UNPARTITIONED__
INFORMATION_SCHEMA.PARTITIONS
次查看。
后续步骤
- 如果您的 BigQuery 仍然存在问题 请参阅获取支持。