在java服務器端經過一些處理後,我通過restful webservice從服務器發送日誌數據(json格式)到kafka。在發佈數據損壞時跳過kafka中的接收器步驟
在hdfs端我的接收器類型是avro。所以爲了解析json(source)到avro(destination),我使用了morphline和avro schema。
如果公佈的數據不適合morphline或Avro的模式,通常我得到下面的錯誤,
造成的:com.fasterxml.jackson.core.JsonParseException:非法 加引號字符((CTRL -CHAR,代碼10)):必須使用 反斜槓轉義被列入字符串值
另外,如果我得到這個曾經,偏移不再移動。簡而言之,如果kafka僅獲取一次該錯誤,它就不能再接收發布的數據。
爲了避免這個錯誤,我想有2個解決方案。首先是在服務器端編寫用於大數據端的avro模式的json驗證器。我首選的第二種方式是跳過並且不會沉沒未格式化爲請求的avro模式的日誌數據。但是,在跳過損壞的數據之後,如果kafka獲得合適的數據,它應該將其淹沒。
我認爲如果我在flume或kafka配置文件中添加一些參數是可能的。那麼當發佈的數據不適合請求的模式或請求的morphline時,如何跳過接收步驟?