[Flume]自定义flume拦截器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

在一系列多路+拦截器的项目中,通常需要我们自定义flume拦截器

我们介绍一下如何自定义flume拦截器

二、具体步骤

1.自定义flume拦截器 实现框架提供的拦截器接口Interceptor

        实现接口内部的方法

//初始化方法 先被执行 无参数校验工作 按照业务逻辑需求
public void initialize()
//处理单个event逻辑方法
public Event intercept(Event event)
//方法的重载 批量处理多个event事件方法
public List<Event> intercept(List<Event> list)
//关闭资源 完成一些收尾工作
public void close()
     

(1) 实现public void initialize()方法

在该案例业务逻辑中无特殊要求,即可省略

 (2)实现public Event interceptor(Event event)

        注意 headers中的key 和value 要和配置文件中的配置信息 相应名称相同

        代码中是简单的拦截 数据中含有“男”的 title标记为nan;数据中含有“女”的 title标记为女;

其他的数据 title标记为other

public Event intercept(Event event) {
        //获取headers
        Map<String, String> headers = event.getHeaders();
        //获取数据
        byte[] body = event.getBody();
        String data = new String(body);

        if(data.contains("男")){
            headers.put("title","nan");
        }else if(data.contains("女")){
            headers.put("title","nv");
        }else {
            headers.put("title","other");
        }

        return null;
    }

 相应配置文件信息: 

#channel selector
    a1.sources.r1.selector.type = multiplexing
    a1.sources.r1.selector.header = title
    a1.sources.r1.selector.mapping.nan = c1
    a1.sources.r1.selector.mapping.nv = c2
    a1.sources.r1.selector.mapping.other = c3
注意配置文件中配置信息与代码相对应!!!

 (3)实现public List<Event> intercept(List<Event> list)方法

批量处理多个event事件方法,遍历调用public Event interceptor(Event event)方法

public List<Event> intercept(List<Event> list) {
        //遍历
        for(Event event : list){
            intercept(event);
        }
        return null;
    }

2.实现拦截器的构建器 实现Builder接口中的方法

        注意改类名一定要和配置文件中配置信息相对应

//实现拦截器的构建器
    public static class MyBuilder implements Builder{

        //构建拦截器的实例化方法
        @Override
        public Interceptor build() {
            return new MyInterceptor();
        }
        //执行拦截器过程中,可以对配置信息进行一系列操作
        @Override
        public void configure(Context context) {
            //该项目中无需此操作,可省略,按照项目需求写
        }
    }
}

总结

上述为自定义flume拦截器的方法

本人学习记录以及分享,如有问题以及建议欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值