【发布时间】:2016-09-02 07:56:15
【问题描述】:
在java服务器端经过一些处理后,我通过restful webservice将日志数据(json格式)从服务器发布到kafka。
在 hdfs 方面我的接收器类型是 avro。因此,为了将 json(源)解析为 avro(目标),我使用的是 morphline 和 avro 模式。
如果发布的数据不适合 morphline 或 avro 模式,通常我会收到以下错误,
原因:com.fasterxml.jackson.core.JsonParseException:非法 不带引号的字符((CTRL-CHAR,代码 10)):必须使用转义 要包含在字符串值中的反斜杠
如果我得到这个一次,偏移量就不再移动了。简而言之,如果 kafka 只收到一次此错误,它就不能再接收已发布的数据了。
为了避免这个错误,我想有两种解决方案。第一个是在服务器端为大数据端使用的 avro 模式编写 json 验证器。我更喜欢的第二种方法是跳过并且不接收未格式化为请求的 avro 模式的日志数据。但是在跳过损坏的数据后,如果 kafka 获得合适的数据,它应该下沉它。
我认为如果我在flume或kafka配置文件中添加一些参数是可能的。那么,当发布的数据不适合请求的模式或请求的 morphline 时,如何跳过接收器步骤?
【问题讨论】:
标签: hadoop hdfs apache-kafka avro flume