Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)
转载自 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)相关推荐
- Hadoop生态Flume(三)拦截器(Interceptor)介绍与使用(1)
转载自 Flume中的拦截器(Interceptor)介绍与使用(一) Flume中的拦截器(interceptor) 用户Source读取events发送到Sink的时候,在events heade ...
- 总结 拦截器(Interceptor) 和 过滤器(Filter)的区别
一.前言 拦截器(Interceptor) 和 过滤器(Filter)的区别是面试中常问的问题,也是开发中容易被大家混淆的问题,在此总结下,希望对大家有所帮助. 二.Filter 介绍 2.1.概念 ...
- Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行
在AbstractConfigurationProvider类中loadSources方法会将所有的source进行封装成SourceRunner放到了Map<String, SourceRun ...
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...
- Springmvc中的拦截器interceptor及与过滤器filter的区别
一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...
- Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系
在我们日常的开发中,我们经常会用到Filter和Interceptor.有时同一个功能.Filter可以做,Interceptor也可以做.有时就需要考虑使用哪一个比较好.这篇文章主要介绍一下,二者的 ...
- Resultful API的拦截(拦截器——Interceptor)
目录 一.Resultful API的拦截三种方式 二.拦截器(Interceptor)的演示示例(springboot项目) 三.Interceptor拦截器特点 四.Filter过滤器.Inter ...
- (十六)ATP应用测试平台——java应用中的过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面,你会了吗?
前言 过滤器Filter.拦截器Interceptor.参数解析器Resolver.Aop切面是我们应用开发中经常使用到的技术,到底该如何使用这些web附属功能, 本小节我们就分别介绍一下其各自的用法 ...
- Spring Boot拦截器(Interceptor)详解
写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站. 文章目录 Interceptor 介绍 Interceptor 作用 自定义 Inte ...
最新文章
- XPath实例教程十四、following-sibling轴
- 成功解决ValueError: DataFrame.dtypes for data must be int, float or bool.Did not expect the data types
- 量子力学到底神奇在哪里?看完这个,我的认知彻底坍塌了
- 【C单链表】链表与尾插法
- PIT,JUnit 5和Gradle –仅需额外的一行配置
- 前n个自然数的平方和的求解方法--经典与独创
- mysql中使用正则表达式,mysql中使用正则表达式查询
- 金笛邮件-邮件连接数据库专题之oracle数据库
- 智能直播审核方案:视频云智能业务截帧策略
- vmware虚拟机连接网络
- 机房管理降本增效:Hightopo如何将可视化监控做到行业高阶?
- 高级职称计算机考试要求考a级,全国职称计算机考试有哪些级别
- Ubuntu 查看分区的磁盘格式
- error LNK2019 无法解析的外部符号 __imp__accept@12
- C语言miller rabin算法,浅谈miller_rabin算法和pollard_rho算法
- java socket连接超时_Java中Socket设置连接超时的代码
- 怎么进入华为路由器终端管理系统
- Time-Evolving Graph Convolutional Recurrent Network for Traffic Prediction论文笔记
- linux环境下如何安装DHCP服务器及示例
- GPS数据矢量化JAVA_算法 – acosf()的精确矢量化实现
热门文章
- cv2.imread读取图像结果none_python cv2.imread 读取中文路径的图片返回为None的问题
- leetcode134. 加油站
- leetcode 515. 在每个树行中找最大值(层序遍历06)
- [Java基础]字符串中的编码解码问题
- C++set和multiset区别
- Fibonacci Sum HDU - 6755【2020 Multi-University Training Contest 1】斐波那契数列变形+二项式定理
- android apt最新版本,解决Android studio 2.3升级到Android studio 3.0 后apt报错问题
- Legacy(线段树优化建边跑Dijkstra)
- P2766 最长不下降子序列问题(网络流)
- Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题