排解 Cloud Storage 接收器連接器問題

本節提供疑難排解指南,協助解決使用 Cloud Storage Sink 連接器時遇到的常見問題。

還原序列化設定有誤

如果連接器的轉換器與 Kafka 中的資料不符,連接器就會失敗,並顯示類似下列內容的錯誤訊息:

org.apache.kafka.connect.errors.DataException: Converting byte[] to Kafka
Connect data failed due to serialization error: 

如要解決這個問題,請確保連接器的鍵和值轉換器與連接器從 Kafka 讀取的資料相符。

舉例來說,如果您將格式輸出類型設為 csv,並將值轉換器設為 JsonConverter,可能會看到下列錯誤:

org.apache.kafka.connect.errors.DataException: Converting byte[] to Kafka
Connect data failed due to serialization error:
at org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:333)
at org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:91)

發生這個錯誤,是因為 CSV 輸出需要 ByteArrayConverter 做為值轉換器,而不是 JsonConverter。詳情請參閱「Cloud Storage Sink 連接器的運作方式」。

記錄檔中的堆疊追蹤記錄可能有助於找出根本原因。舉例來說,下列記錄項目表示轉換 UTF-32 字元時發生問題:

Caused by: org.apache.kafka.common.errors.SerializationException:
java.io.CharConversionException: Invalid UTF-32 character 0x31d086a
(above 0x0010ffff) at char #1, byte #7

缺少 Cloud Storage bucket 權限

如果代管 Kafka 服務帳戶沒有 Cloud Storage bucket 的寫入權限,連接器就會失敗,並顯示類似下列內容的錯誤訊息:

org.apache.kafka.connect.errors.ConnectException:
com.google.cloud.storage.StorageException: 403 Forbidden

如要解決這個問題,請將「Storage 物件建立者」角色 (roles/storage.objectCreator) 授予代管 Kafka 服務帳戶。詳情請參閱「授予 Cloud Storage bucket 的寫入權限」。

後續步驟