在 Managed Service for Apache Kafka 中,您可以診斷並解決 Kafka Connect 的 BigQuery Sink 連接器中的擷取問題。
本頁面說明將記錄從 Managed Service for Apache Kafka 串流至 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。