本部分针对使用 BigQuery sink 连接器时遇到的常见问题提供了问题排查指南。
排查表驱动配置问题
在表驱动配置模式下,Kafka 消息必须与表架构高度一致。以下是配置此方法时可能会遇到的一些常见问题。
缺少不可为 null 的列
如果 Kafka 消息省略了 BigQuery 表中作为不可为 null 的列存在的字段,则写入操作会失败,并显示类似于以下内容的错误消息:
Failed to write rows after BQ table creation or schema update within 30
attempts for: GenericData{classInfo=[datasetId, projectId, tableId], {datasetId=<datasetID>, tableId=<tableID>}}"
将 <datasetID> 和 <tableID> 替换为实际的数据集和表 ID。
如需解决此问题,请将 BigQuery 列更改为 NULLABLE,然后重启连接器。
未定义的字段
如果 Kafka 消息中的任何字段未在 BigQuery 表架构中定义,写入操作会失败,并显示类似于以下内容的错误消息:
Insertion failed at table repairScenario for following rows:
[row index 0] (Failure reason : The source object has fields unknown to BigQuery: root.<fieldName>.)
将 <fieldName> 替换为未定义字段的名称。
如需解决此问题,请将缺少的字段添加到 BigQuery 表中,然后重启连接器。
类型不匹配
如果 Kafka 消息字段与相应的 BigQuery 表列之间发生类型不匹配(例如,Kafka 中为字符串,而 BigQuery 中为整数),则写入操作会失败,并显示类似于以下内容的错误消息:
[row index 0] (location <field>, reason: invalid): Cannot convert value to <type> (bad value): <val>
将 <field>、<type> 和 <val> 分别替换为相关字段名称、数据类型和值。
这是一个已知问题。
AppendRows 请求过大
使用连接器的 StorageWrite 模式时,您可能会看到类似于以下内容的错误:
INVALID_ARGUMENT: AppendRows request too large: 11053472 limit 10485760
连接器会尝试将从 Kafka 单次轮询中的所有消息以单个批次写入 BigQuery。如果批次大小超过 BigQuery 限制(10485760 字节),写入操作将失败。如需解决此错误,请将连接器上的 consumer.override.max.poll.records 配置属性设置为较小的数字。此参数的默认值为 500。