1

我刚开始玩 Flume。我有一个关于如何将多行日志条目作为单个事件处理的问题。就像错误条件下的堆栈跟踪一样。例如,将以下内容视为单个事件,而不是每行一个事件

2013-04-05 05:00:41,280 错误(ClientRequestPool-PooledExecutionEngine-Id#4)[com.ms.fw.rexs.gwy.api.service.AbstractAutosysJob] 作业因 228794 java.lang.NullPointerException 在 com.ms 失败.fw.rexs.core.impl.service.job.ReviewNotificationJobService.createReviewNotificationMessageParameters(ReviewNotificationJobService.java:138) ....

我已将源配置为 spooldir 类型。

谢谢你苏曼

4

2 回答 2

0

如文档所述, spooldir source 为输入数据中由换行符分隔的每个字符串创建一个新事件。您可以根据spooldir source 的代码创建自己的接收器(请参阅http://flume.apache.org/FlumeDeveloperGuide.html#sink)来修改此行为。您需要实现能够根据某些标准检测消息的开始行和结束行的解析算法。

此外,还有其他来源,例如 Syslog UDP 和 Avro,将整个接收到的消息视为单个事件,因此您无需任何修改即可使用它。

于 2013-04-17T09:48:55.373 回答
0

您需要考虑扩展 spool 源使用的行反序列化器,一种简单(但可能存在缺陷)的方法是在换行符上定界,但将带有一定数量空格前缀的行组合到前一行。

事实上,这个补丁已经存在一个 Jira 问题:

于 2016-11-01T09:49:19.527 回答