排查 BigQuery sink 连接器问题

本部分针对使用 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> 分别替换为相关字段名称、数据类型和值。

这是一个已知问题。

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。

AppendRows 请求过大

使用连接器的 StorageWrite 模式时,您可能会看到类似于以下内容的错误:

INVALID_ARGUMENT: AppendRows request too large: 11053472 limit 10485760

连接器会尝试将从 Kafka 单次轮询中的所有消息以单个批次写入 BigQuery。如果批次大小超过 BigQuery 限制(10485760 字节),写入操作将失败。如需解决此错误,请将连接器上的 consumer.override.max.poll.records 配置属性设置为较小的数字。此参数的默认值为 500。

后续步骤