IDEA编写自定义拦截器
IDEA中导入以下依赖:
<!-- https://mvnrepository.com/artifact/org.apache.flume/flume-ng-core -->
<dependency>
<groupId>org.apache.flume</groupId>
<artifactId>flume-ng-core</artifactId>
<version>1.6.0</version>
</dependency>
</dependencies>
案例一
IDEA代码:
public class InterceptorDemo implements Interceptor {
// 初始化
private List<Event> addHeaderEvents;
@Override
public void initialize() {
addHeaderEvents = new ArrayList<>();
}
@Override
public Event intercept(Event event) {
byte[] body = event.getBody();
Map<String, String> headers = event.getHeaders();
String bodyStr = new String(body);
if (bodyStr.startsWith("gree")){
headers.put("type","gree");
}else {
headers.put("type","qianchun");
}
return event;
}
@Override
public List<Event> intercept(List<Event> events) {
addHeaderEvents.clear();
for (Event event:events) {
addHeaderEvents.add(intercept(event));
}
return addHeaderEvents;
}
@Override
public void close() {
}
public static class Builder implements Interceptor.Builder {
@Override
public Interceptor build() {
return new InterceptorDemo();
}
@Override
public void configure(Context context) {
}
}
}
Flume Shell命令:
- 编写 agent 配置文件 netcat-flume-interceptor-hdfs.conf
vi netcat-flume-interceptor