本文為您介紹資料同步方面的常見問題。
報錯:Encountered change event for table xxx.xxx whose schema isn't known to this connector
報錯:Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax
同步Kafka JSON資料到Hologres,作業運行過程中JSON Schema發生改變,如何解決?
常規做法是停止Flink作業,修改代碼並調整Hologres表結構後重新上線,這樣可能會導致作業資料延時以及出現不必要的錯誤。
針對以上的問題,Realtime ComputeFlink版做了以下最佳化來規避該問題:
支援Kafka JSON format Schema自適應變更。即使JSON Schema發生改變,也無需停止作業或修改SQL語句,系統會自動將變更的Schema同步到Hologres。
支援Kafka JSON format的類型推導,不需要在DDL語句聲明JSON裡面的欄位類型。
支援遞迴式展開JSON的嵌套列,例如對於如下JSON資料:
{"nested": {"col": true}}列col會被展開為nested.col。
報錯:Encountered change event for table xxx.xxx whose schema isn't known to this connector
問題詳情

問題原因
在開啟CDAS或CTAS新增表讀取功能時,出現該報錯的原因如下:
當資料庫使用者缺少作業中使用的某些資料庫所需的許可權時,可能會出現該錯誤。
作業中配置了
'debezium.snapshot.mode'='never'。因為這會導致從Binlog開頭讀取資料,但是Binlog開頭的變更事件對應的Table Schema和當前表的Schema可能不匹配,所以會報該錯。遇到Debezium解析不了的變更,例如Debezium無法解析`DEFAULT (now())`,可能出現該錯誤。
解決方案
確保資料庫使用者擁有作業所需的所有資料庫許可權(通常需要讀取、寫入、修改資料、建立和修改表結構、以及建立表的許可權,具體要求的權限詳情請參見對應連接器文檔)。
通過
'debezium.inconsistent.schema.handling.mode' = 'warn'參數避免報錯,不建議使用'debezium.snapshot.mode'='never',繼續觀察日誌,查詢
io.debezium.connector.mysql.MySqlSchema WARN的log,會列印出具體無法解析的變更詳情,例如Debezium解析不了`DEFAULT (now())`。
報錯:Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax
問題詳情
在部署作業或者啟動作業時報錯:

問題原因
CTAS和CDAS作業不支援微批(MiniBatch)操作,但您的SQL流作業中卻啟用了
table.exec.mini-batch.enabled: 'true'配置。解決方案
在SQL流作業中去掉MiniBatch相關配置。
未部署成功的SQL流作業
在組態管理頁面的作業預設配置頁簽的其他配置中,刪除MiniBatch相關配置資訊或將
table.exec.mini-batch.enabled取值設為false,儲存修改後重新建立並部署SQL流作業。
已部署成功的SQL流作業
如果作業已跳過部署前的深度檢查並完成部署,請前往作業營運頁面的部署詳情頁簽,在運行參數配置的其他配置中,刪除MiniBatch配置資訊或將
table.exec.mini-batch.enabled取值設為false,並重啟作業。