工具
文件channel验证工具
文件channel完整性校验工具可验证文件channel中各个Event的完整性,并删除损坏的Event。
这个工具可以通过下面这种方式开启:
- $bin/flume-ng tool --conf ./conf FCINTEGRITYTOOL -l ./datadir
datadir 是即将被校验的用逗号分隔的目录列表。
以下是可选的参数
选项 | 解释 |
---|---|
h/help | 显示帮助信息 |
l/dataDirs | 校验工具会校验的目录列表,多个用逗号分隔 |
Event校验工具
Event验证器工具可用于按照预定好的逻辑验证文件channel中的Event。 该工具会在每个Event上执行用户自定义的验证逻辑,并删除不符合校验逻辑的Event。
提示
简单说就是一个自定义的Event校验器,只能用于验证文件channel中的Event。实现的方式就是实现 EventValidator 接口,没有被校验通过的Event会被丢弃。
多bb一句:目前还没想到这个工具有哪些用途,感觉可以用自定义拦截器来实现这种功能,说起拦截器又很奇怪在拦截器章节中居然没有介绍自定义拦截器。
这个工具可以通过下面这种方式开启:
- $bin/flume-ng tool --conf ./conf FCINTEGRITYTOOL -l ./datadir -e org.apache.flume.MyEventValidator -DmaxSize 2000
datadir 是即将被校验的用逗号分隔的目录列表。
以下是可选的参数
选项 | 解释 |
---|---|
h/help | 显示帮助信息 |
l/dataDirs | 校验工具会校验的目录列表,多个用逗号分隔 |
e/eventValidator | 自定义验证工具类的全限定类名,这个类的jar包必须在Flume的classpath中 |
自定义的Event验证器必须实现 EventValidator 接口,建议不要抛出任何异常。其他参数可以通过-D选项传递给EventValitor实现。
让我们看一个基于简单的Event大小验证器的示例,它将拒绝大于指定的最大size的Event。
- public static class MyEventValidator implements EventValidator {
- private int value = 0;
- private MyEventValidator(int val) {
- value = val;
- }
- @Override
- public boolean validateEvent(Event event) {
- return event.getBody() <= value;
- }
- public static class Builder implements EventValidator.Builder {
- private int sizeValidator = 0;
- @Override
- public EventValidator build() {
- return new DummyEventVerifier(sizeValidator);
- }
- @Override
- public void configure(Context context) {
- binaryValidator = context.getInteger("maxSize");
- }
- }
- }
当前内容版权归 liyifeng 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 liyifeng 译 .