转载自 Flume中的拦截器(Interceptor)介绍与使用(二)

lume中的拦截器(interceptor),用户Source读取events发送到Sink的时候,在events header中加入一些有用的信息,或者对events的内容进行过滤,完成初步的数据清洗。这在实际业务场景中非常有用,Flume-ng 1.6中目前提供了以下拦截器:

Timestamp Interceptor;
Host Interceptor;
Static Interceptor;
UUID Interceptor;
Morphline Interceptor;
Search and Replace Interceptor;
Regex Filtering Interceptor;
Regex Extractor Interceptor;

本文接上一篇《Flume中的拦截器(Interceptor)介绍与使用(一)》,继续对剩下几种拦截器进行学习和介绍,并附上使用示例。

一、Search and Replace Interceptor

该拦截器用于将events中的正则匹配到的内容做相应的替换。

具体配置示例如下:

## source 拦截器
agent_lxw1234.sources.sources1.interceptors = i1
agent_lxw1234.sources.sources1.interceptors.i1.type = search_replace
agent_lxw1234.sources.sources1.interceptors.i1.searchPattern = [0-9]+
agent_lxw1234.sources.sources1.interceptors.i1.replaceString = lxw1234
agent_lxw1234.sources.sources1.interceptors.i1.charset = UTF-8# sink 1 配置
##agent_lxw1234.sinks.sink1.type = com.lxw1234.sink.MySink
agent_lxw1234.sinks.sink1.type = logger
agent_lxw1234.sinks.sink1.channel = fileChannel

该配置将events中的数字替换为lxw1234。

原始的events内容为:

实际的events内容为:

二、Regex Filtering Interceptor

该拦截器使用正则表达式过滤原始events中的内容。

配置示例如下:

## source 拦截器
agent_lxw1234.sources.sources1.interceptors = i1
agent_lxw1234.sources.sources1.interceptors.i1.type = regex_filter
agent_lxw1234.sources.sources1.interceptors.i1.regex = ^lxw1234.*
agent_lxw1234.sources.sources1.interceptors.i1.excludeEvents = false# sink 1 配置
##agent_lxw1234.sinks.sink1.type = com.lxw1234.sink.MySink
agent_lxw1234.sinks.sink1.type = logger
agent_lxw1234.sinks.sink1.channel = fileChannel

该配置表示过滤掉不是以lxw1234开头的events。

如果excludeEvents设为true,则表示过滤掉以lxw1234开头的events。

原始events内容为:

拦截后的events内容为:

三、Regex Extractor Interceptor

该拦截器使用正则表达式抽取原始events中的内容,并将该内容加入events header中。

配置示例如下:

## source 拦截器
agent_lxw1234.sources.sources1.interceptors = i1
agent_lxw1234.sources.sources1.interceptors.i1.type = regex_extractor
agent_lxw1234.sources.sources1.interceptors.i1.regex = cookieid is (.*?) and ip is (.*?)
agent_lxw1234.sources.sources1.interceptors.i1.serializers = s1 s2
agent_lxw1234.sources.sources1.interceptors.i1.serializers.s1.type = default
agent_lxw1234.sources.sources1.interceptors.i1.serializers.s1.name = cookieid
agent_lxw1234.sources.sources1.interceptors.i1.serializers.s2.type = default
agent_lxw1234.sources.sources1.interceptors.i1.serializers.s2.name = ip# sink 1 配置
##agent_lxw1234.sinks.sink1.type = com.lxw1234.sink.MySink
agent_lxw1234.sinks.sink1.type = logger
agent_lxw1234.sinks.sink1.channel = fileChannel

该配置从原始events中抽取出cookieid和ip,加入到events header中。

原始的events内容为:

events header中的内容为:

Flume的拦截器可以配合Sink完成许多业务场景需要的功能,

比如:按照时间及主机生成目标文件目录及文件名;

配合Kafka Sink完成多分区的写入等等。

Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)相关推荐

  1. Hadoop生态Flume(三)拦截器(Interceptor)介绍与使用(1)

    转载自 Flume中的拦截器(Interceptor)介绍与使用(一) Flume中的拦截器(interceptor) 用户Source读取events发送到Sink的时候,在events heade ...

  2. 总结 拦截器(Interceptor) 和 过滤器(Filter)的区别

    一.前言 拦截器(Interceptor) 和 过滤器(Filter)的区别是面试中常问的问题,也是开发中容易被大家混淆的问题,在此总结下,希望对大家有所帮助. 二.Filter 介绍 2.1.概念 ...

  3. Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行

    在AbstractConfigurationProvider类中loadSources方法会将所有的source进行封装成SourceRunner放到了Map<String, SourceRun ...

  4. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

    理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...

  5. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

  6. Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系

    在我们日常的开发中,我们经常会用到Filter和Interceptor.有时同一个功能.Filter可以做,Interceptor也可以做.有时就需要考虑使用哪一个比较好.这篇文章主要介绍一下,二者的 ...

  7. Resultful API的拦截(拦截器——Interceptor)

    目录 一.Resultful API的拦截三种方式 二.拦截器(Interceptor)的演示示例(springboot项目) 三.Interceptor拦截器特点 四.Filter过滤器.Inter ...

  8. (十六)ATP应用测试平台——java应用中的过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面,你会了吗?

    前言 过滤器Filter.拦截器Interceptor.参数解析器Resolver.Aop切面是我们应用开发中经常使用到的技术,到底该如何使用这些web附属功能, 本小节我们就分别介绍一下其各自的用法 ...

  9. Spring Boot拦截器(Interceptor)详解

    写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站. 文章目录 Interceptor 介绍 Interceptor 作用 自定义 Inte ...

最新文章

  1. XPath实例教程十四、following-sibling轴
  2. 成功解决ValueError: DataFrame.dtypes for data must be int, float or bool.Did not expect the data types
  3. 量子力学到底神奇在哪里?看完这个,我的认知彻底坍塌了
  4. 【C单链表】链表与尾插法
  5. PIT,JUnit 5和Gradle –仅需额外的一行配置
  6. 前n个自然数的平方和的求解方法--经典与独创
  7. mysql中使用正则表达式,mysql中使用正则表达式查询
  8. 金笛邮件-邮件连接数据库专题之oracle数据库
  9. 智能直播审核方案:视频云智能业务截帧策略
  10. vmware虚拟机连接网络
  11. 机房管理降本增效:Hightopo如何将可视化监控做到行业高阶?
  12. 高级职称计算机考试要求考a级,全国职称计算机考试有哪些级别
  13. Ubuntu 查看分区的磁盘格式
  14. error LNK2019 无法解析的外部符号 __imp__accept@12
  15. C语言miller rabin算法,浅谈miller_rabin算法和pollard_rho算法
  16. java socket连接超时_Java中Socket设置连接超时的代码
  17. 怎么进入华为路由器终端管理系统
  18. Time-Evolving Graph Convolutional Recurrent Network for Traffic Prediction论文笔记
  19. linux环境下如何安装DHCP服务器及示例
  20. GPS数据矢量化JAVA_算法 – acosf()的精确矢量化实现

热门文章

  1. cv2.imread读取图像结果none_python cv2.imread 读取中文路径的图片返回为None的问题
  2. leetcode134. 加油站
  3. leetcode 515. 在每个树行中找最大值(层序遍历06)
  4. [Java基础]字符串中的编码解码问题
  5. C++set和multiset区别
  6. Fibonacci Sum HDU - 6755【2020 Multi-University Training Contest 1】斐波那契数列变形+二项式定理
  7. android apt最新版本,解决Android studio 2.3升级到Android studio 3.0 后apt报错问题
  8. Legacy(线段树优化建边跑Dijkstra)
  9. P2766 最长不下降子序列问题(网络流)
  10. Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题