flume用于有效地收集,聚合和移动大量日志数据
1.进入idea,在maven中导入jar包
pom.xml文件下添加代码
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.flume/flume-ng-core -->
<dependency>
<groupId>org.apache.flume</groupId>
<artifactId>flume-ng-core</artifactId>
<version>1.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
</dependencies>
注意:修改flume的版本与自己的flume的版本相同,我的是flume版本是1.8.0
2.新建一个类,实现flume的Interceptor接口,再在内里面实现静态内部类,实现Builder
一个这个自定义flume拦截器类的框架如下:
import org.apache.flume.Context; import org.apache.flume.Event; import org.apache.flume.interceptor.Interceptor; import java.util.List; public class MyInterceptor implements Interceptor { @Override public void initialize() { } @Override public Event intercept(Event event) { return null; } @Override public List<Event> intercept(List<Event> list) { return null; } @Override public void close() { } public static class Build implements Builder{ @Override public Interceptor build() { return null; } @Override public void configure(Context context) { } } }
3.实现Interceptor和Builder接口实现方法解析
Interceptor接口方法:
initialize():该方法用来初始化拦截器,在拦截器的构造方法执行之后执行,也就是创建完拦 截器对象之后执行。
intercept():用来处理每一个event对象,该方法不会被系统自动调用,一般在 List<Event> intercept(List<Event>