2020.12.01课堂笔记(flume拦截器以及自定义拦截器)

flume的拦截器interceptors分为自带的拦截器以及用户自定义的拦截器。
用户自定义拦截器的时候可以划分为3个部分:
1.按照需求编写Java代码
2.打成jar包,上传到flume的lib目录下
3.编写agent的组件,执行

使用flume自带的拦截器regex_filter 正则过滤拦截器:
编写agent组件:

// agent组件分为三个部分: sources,channels,sinks
users.sources=userSource
users.channels=userChannel
users.sinks=userSink
// Spooling Directory Source
// 这个Source允许你把要收集的文件放入磁盘上的某个指定目录。它会将监视这个目录中产生的新文件,并在新文件出现时从新文件中解析数据出来。数据解析逻辑是可配置的。在新文件被完全读入Channel之后会重命名该文件以示完成(也可以配置成读完后立即删除)。
users.sources.userSource.type=spooldir
// Flume Source监控的文件夹目录,该目录下的文件会被Flume收集
users.sources.userSource.spoolDir=/opt/flume160/conf/jobkb09/dataSourceFile/user
//指定会被收集的文件名正则表达式,它跟下面的ignorePattern不冲突,可以一起使用。如果一个文件名同时被这两个正则匹配到,则会被忽略,换句话说ignorePattern的优先级更高 (正则匹配文件名)
users.sources.userSource.includePattern=users_[0-9]{
   4}-[0-9]{
   2}-[0-9]{
   2}.csv
//指定一个把文件中的数据行解析成Event的解析器。默认是把每一行当做一个Event进行解析,所有解析器必须实现EventDeserializer.Builder接口  LINE这个反序列化器会把文本数据的每行解析成一个Event
users.sources.userSource.deserializer=LINE
//每个Event数据所包含的最大字符数,如果一行文本字符数超过这个配置就会被截断,剩下的字符会出现再后面的Event数据里  默认值2048
users.sources.userSource.deserializer.maxLineLength=10000

users.sources.userSource.interceptors=head_filter
//组件类型,这个是: regex_filter 正则过滤拦截器
users.sources.userSource.interceptors.head_filter.type=regex_filter
//用于匹配Event内容的正则表达式
users.sources.userSource.interceptors.head_filter.regex=^user_id*
//如果为true,被正则匹配到的Event会被丢弃;如果为false,不被正则匹配到的Event会被丢弃
users.sources.userSource.interceptors.head_filter.excludeEvents=true

// File Channel 组件类型,这个是: file.
users.channels.userChannel.type=file 
// 记录检查点的文件的存储目录
users.channels.userChannel.checkpointDir=/opt/flume160/conf/jobkb09/checkPointFile/user
// 逗号分隔的目录列表,用于存储日志文件。在不同物理磁盘上使用多个目录可以提高文件channel的性能
users.channels.userChannel.dataDirs=/opt/flume160/conf/jobkb09/dataChannelFile/user
// HDFS Sink 这个Sink将Event写入Hadoop分布式文件系统(也就是HDFS)。 目前支持创建文本和序列文件。 它支持两种文件类型的压缩。 可以根据写入的时间、文件大小或Event数量定期滚动文件(关闭当前文件并创建新文件)。 它还可以根据Event自带的时间戳或系统时间等属性对数据进行分区。 存储文件的HDFS目录路径可以使用格式转义符,会由HDFS Sink进行动态地替换,以生成用于存储Event的目录或文件名。 使用此Sink需要安装hadoop, 以便Flume可以使用Hadoop的客户端与HDFS集群进行通信。 注意, 需要使用支持sync() 调用的Hadoop版本 
users.sinks.userSink.type=hdfs
// hdfs.fileType 文件格式,目前支持: SequenceFile 、 DataStream 、 CompressedStream 。 1. DataStream 不会压缩文件,不需要设置hdfs.codeC 2. CompressedStream 必须设置hdfs.codeC参数
users.sinks.userSink.hdfs.fileType=DataStream
// Flume在HDFS文件夹下创建新文件的固定前缀
users.sinks.userSink.hdfs.filePrefix=users
// Flume在HDFS文件夹下创建新文件的后缀(比如:.avro,注意这个“.”不会自动添加,需要显式配置)
users.sinks.userSink.hdfs.fileSuffix=.csv
// HDFS目录路径(例如:hdfs://namenode/flume/webdata/)
users.sinks.userSink.hdfs.path=hdfs://192.168.237.100:9000/kb09file/user/users/%Y-%m-%d
// 使用日期时间转义符时是否使用本地时间戳(而不是使用 Event header 中自带的时间戳)
users.sinks.userSink.hdfs.useLocalTimeStamp=true
// 向 HDFS 写入内容时每次批量操作的 Event 数量 默认值是100
users.sinks.userSink.hdfs.batchSize=640
// 当前文件写入Event达到该数量后触发滚动创建新文件(0表示不根据 Event 数量来分割文件) 默认值是10
users.sinks.userSink.hdfs.rollCount=0
// 当前文件写入达到该大小后触发滚动创建新文件(0表示不根据文件大小来分割文件),单位:字节 默认值1024字节=1k
users.sinks
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值