Unexpected end-of-input in VALUE_STRING
json解析异常:
[DEBUG - org.apache.hive.hcatalog.data.JsonSerDe.deserialize(JsonSerDe.java:178)]
org.codehaus.jackson.JsonParseException:Unrecognized token 'nWsj1W3Zzy': was expecting 'null', 'true', 'false' or NaN
at [Source: [email protected]; line: 1, column: 21]
Unexpected end-of-input in VALUE_STRING
failed : Unable to convert byte[] record into Object :
然后发现日志每行信息被截取了,json格式错误,导致无法解析;最初没有想到是flume截取的每行数据,以为是hive处理的时候过长有什么操作,按错误发生在sink端处理的,一直找不到原因。
百度多了,量变达到效果,发现了有写flume会截取过长的信息,
flume在收集log的时候经常会出现Line length exceeds max (2048), truncating line!,这个一般情况对于一些log的存储没影响,但是遇到需要解析log的情况就有问题了,有时一个json或者其他格式的log被截断了,解析也会出问题,所以在source的属性配置里可以通过参数deserializer.maxLineLength调高默认的2048。
然后修改配置文件: