Flume自定义拦截器Interceptors

本文介绍如何使用Java实现自定义的Flume拦截器,用于处理数据流中的性别字段,将“男”替换为“1”,“女”替换为“0”,其他默认为“2”。文章详细展示了CustomInterceptor类的编写,包括初始化、事件拦截、列表拦截及关闭方法。并通过实例演示了如何在Flume配置中应用此自定义拦截器。

用java实现一个自定义拦截器

在这里插入图片描述
将上述图片的性别男设置为1,女设置为0,其他默认为2

java自定义拦截器

pom:添加flume-ng-core依赖
在这里插入图片描述
CustomInterceptor类:

import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.interceptor.Interceptor;
import java.util.List;

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

    }

    @Override
    public Event intercept(Event event) {
        byte[] body = event.getBody();
        String line = new String(body);    // 1,张三,男,40
        String[] sps = line.split(",");
        switch (sps[2]) {
            case "男":
                sps[2] = "1";
                break;
            case "女":
                sps[2] = "0";
                break;
            default:
                sps[2] = "2";
        }
        String newStr = sps[0]+","+sps[1]+","+sps[2]+","+sps[3];
        event.setBody(newStr.getBytes());
        return event;
    }

    @Override
    public List<Event> intercept(List<Event> list) {
        for (Event event:list) {
            intercept(event);
        }
        return list;
    }

    @Override
    public void close() {

    }

    public static class Builder implements Interceptor.Builder {
        @Override
        public Interceptor build() {
            return new CustomInterceptor();
        }

        @Override
        public void configure(Context context) {

        }
    }
}

打包

打jar包,放入flume的lib里面 /opt/soft/flume160/lib

运行

编辑conf配置

a4.channels=c4
a4.sources=s4
a4.sinks=k4

a4.sources.s4.type=spooldir
a4.sources.s4.spoolDir=/opt/datas
a4.sources.s4.interceptors=myinterc
a4.sources.s4.interceptors.myinterc.type=com.njbdqn.myinterceptors.CustomInterceptor$Builder

a4.channels.c4.type=memory

a4.sinks.k4.type=logger

a4.sinks.k4.channel=c4
a4.sources.s4.channels=c4

kkk.txt放入datas目录下

结果

flume-ng agent -n a4 -c conf -f /opt/flumeconf/conf_0806_custconf.properties -Dflume.root.logger=INFO,console

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值