简介
在一次使用flume+kafka+sparkstreaming架构处理日志时,出现一个很奇怪的问题:日志中的某一行数据总会被切分成了多行,总的输出日志行数也比原始日志文件多出了几十行,导致具体的处理逻辑中出现各种错误。经过排查,定位到问题是出现在flume上。 在flume中采集的一行数据量是有大小限制的,默认为2048,即2KB,而我的日志中有些行的大小已经超过了这个限制,然后flume就会将之切分成多行。同时flume也会在采集的时候弹出警告信息:
[WARN - org.apache.flume.serialization.LineDeserializer.readLine(LineDeserializer.java:143)] Line length exceeds max (2048), truncating line!
下面是flume1.7的源码中出现问题的地方(本段代码,位于flume源码包org\apache\flume\serialization类中)。
public static final String MAXLINE_KEY = "maxLineLength";