本節提供疑難排解指南,協助解決使用 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> 分別替換為相關欄位名稱、資料類型和值。
這是已知問題。
AppendRows 要求過大
使用連接器的 StorageWrite 模式時,您可能會看到類似下列的錯誤:
INVALID_ARGUMENT: AppendRows request too large: 11053472 limit 10485760
連接器會嘗試將 Kafka 單一輪詢中的所有訊息,以單一批次的形式寫入 BigQuery。如果批次大小超過 BigQuery 限制 (10485760 個位元組),寫入作業就會失敗。如要解決這項錯誤,請將連接器上的 consumer.override.max.poll.records
設定屬性設為較小的數字。這個參數的預設值為 500。