排解 BigQuery 接收器連接器問題

本節提供疑難排解指南,協助解決使用 BigQuery 接收器連接器時的常見問題。

排解表格驅動設定問題

在資料表驅動的設定模式中,Kafka 訊息必須與資料表結構定義密切配合。以下列出設定這個方法時可能發生的常見問題。

缺少不可為空值的資料欄

如果 Kafka 訊息省略了 BigQuery 資料表中存在且不可為空值的資料欄,寫入作業就會失敗,並顯示類似下列的錯誤訊息:

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® 是 The Apache Software Foundation 或其關聯企業在美國與/或其他國家/地區的註冊商標。

AppendRows 要求過大

使用連接器的 StorageWrite 模式時,您可能會看到類似下列的錯誤:

INVALID_ARGUMENT: AppendRows request too large: 11053472 limit 10485760

連接器會嘗試將 Kafka 單一輪詢中的所有訊息,以單一批次的形式寫入 BigQuery。如果批次大小超過 BigQuery 限制 (10485760 個位元組),寫入作業就會失敗。如要解決這項錯誤,請將連接器上的 consumer.override.max.poll.records 設定屬性設為較小的數字。這個參數的預設值為 500。

後續步驟