采集数据零点漂移问题解析

本文讨论了在日志处理过程中出现的零点漂移现象,即日志数据在经过不同组件传输后,时间戳发生错误导致归档错误的问题。通过介绍一个自定义的Flume拦截器`TimestampInterceptor`,展示了如何从日志内容中提取原始时间戳并添加到Event的header中,从而确保日志被正确地归档到对应的时间目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么会发生零点漂移?

比如2021-10-10 23:59:59生成的日志文件,然后数据经过第一层的flume采集,加上kafka的缓冲,然后到 集群的另一台上的第二层的flume的时候,时间肯定就会到2020-10-11 00:00:XX了,这样一来,如果采用当前系统时间作为timestamp的话,2020-10-10 的日志数据就会上传到hdfs上的2020-10-11 的目录下。因为Kafka Source会为其加上该header,value为当前系统的时间戳Kafka Source会为其加上该header,value为当前系统的时间戳

所以我们需要再第二层flume里面写这么一个加时间戳的拦截器,把日志文件里面的时间添加到event的header里面

public class TimestampInterceptor implements Interceptor {
    @Override
    public void initialize() {

    }

    @Override
    public Event intercept(Event event) {

        //获取Event中的body,并转为String字符串
        byte[] body = event.getBody();
        String log = new String(body, StandardCharsets.UTF_8);

        //解析日志,得到json对象
        JSONObject jsonObject = JSON.parseObject(log);

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值