排解 BigQuery 接收器連接器問題

在 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。

後續步驟

Apache Kafka® 是 Apache Software Foundation 或其關係企業在美國和/或其他國家/地區的註冊商標。