Flume(flume自带拦截器、自定义拦截器)

vi@TOC

一、Flume自带的拦截器

示例1:
具体实现:
通过正则表达式,过滤掉匹配上的消息,这里是以user开头的消息
实现一个source传向2个通道,两个sink将两个通道的数据分别传入Kafka和hdfs

配置文件:

定义三个组件:

//agent组件的三部分的初始化定义
train.sources=trainSource
train.channels=kafkaChannel hdfsChannel
train.sinks=kafkaSink hdfsSink

source:

//sousce被定义为监听某个文件路径下的新文件
train.sources.trainSource.type=spooldir
//flume监听的文件目录,该目录下的文件内容会被flune收集
train.sources.trainSource.spoolDir=/root/software/flumlogfile/train
//指定一个把文件中的一行数据解析成Event的解析器,所有解析器必须实现EventDeserializer.Builder接口  LINE这个反序列化器会把文本数据的每行解析成一个Event
train.sources.trainSource.deserializer=LINE
//指定一个Event数据所包含的最大字符数,一行文本超过配置的这个长度就会被截断
train.sources.trainSource.deserializer.maxLineLength=32000
//指定要被读取的文件的正则表达式
train.sources.trainSource.includePattern=train_[0-9]{
  
  4}-[0-9]{
  
  2}-[0-9]{
  
  2}.csv
//指定拦截器是head_filter类型
train.sources.trainSource.interceptors=head_filter
//定义组件,regex_filter 正则过滤拦截器
train.sources.trainSource.interceptors.head_filter.type=regex_filter
//设置Event内容的正则表达式
train.sources.trainSource.interceptors.head_filter.regex=^user*
//true表示丢弃掉匹配上正则表达式的内容,flase表示保留匹配上正则表达式的内容
train.sources.trainSource.interceptors.head_filter.excludeEvents=true

channel:

train.channels.kafkaChannel.type=file
train.channels.kafkaChannel.checkpoinDir=/root/software/flumlogfile/checkpoint/train
train.channels.kafkaChannel.dataDirs=/root/software/flumlogfile/data/train

train.channels.hdfsChannel.type=memory
train.channels.hdfsChannel.capacity=64000
train.channels.hdfsChannel.transactionCapacity=16000

sink:

train.sinks.kafkaSink.type=org.apache.flume.sink.kafka.KafkaSink
train.sinks.kafkaSink.batchSize=640
train.sinks.kafkaSink.brokerList=192.168.21.2:9092
train.sinks.kafkaSink.topic=train

train.sinks.hdfsSink.type=hdfs
train.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值