flume文件名interceptor

2024-06-16 20:08
文章标签 文件名 interceptor flume

本文主要是介绍flume文件名interceptor,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从文件名提取日期、小时信息,决定数据发送到hdfs哪天哪小时的分区目录。

需要自定义一个拦截器

package interceptor;import java.util.List;  
import java.util.Map;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  import org.apache.commons.lang.StringUtils;  
import org.apache.flume.Context;  
import org.apache.flume.Event;
import org.apache.flume.interceptor.Interceptor;
import org.apache.flume.interceptor.RegexExtractorInterceptorPassThroughSerializer;  
import org.apache.flume.interceptor.RegexExtractorInterceptorSerializer;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  import com.google.common.base.Charsets;  
import com.google.common.base.Preconditions;  
import com.google.common.base.Throwables;  
import com.google.common.collect.Lists; /*** Interceptor that extracts matches using a specified regular expression and* appends the matches to the event headers using the specified serializers</p>* Note that all regular expression matching occurs through Java's built in* java.util.regex package</p>. Properties:* <p>* regex: The regex to use* <p>* serializers: Specifies the group the serializer will be applied to, and the* name of the header that will be added. If no serializer is specified for a* group the default {@link RegexExtractorInterceptorPassThroughSerializer} will* be used* <p>* Sample config:* <p>* agent.sources.r1.channels = c1* <p>* agent.sources.r1.type = SEQ* <p>* agent.sources.r1.interceptors = i1* <p>* agent.sources.r1.interceptors.i1.type = REGEX_EXTRACTOR* <p>* agent.sources.r1.interceptors.i1.regex = (WARNING)|(ERROR)|(FATAL)* <p>* agent.sources.r1.interceptors.i1.serializers = s1 s2* agent.sources.r1.interceptors.i1.serializers.s1.type = com.blah.SomeSerializer* agent.sources.r1.interceptors.i1.serializers.s1.name = warning* agent.sources.r1.interceptors.i1.serializers.s2.type = org.apache.flume.interceptor.RegexExtractorInterceptorTimestampSerializer* agent.sources.r1.interceptors.i1.serializers.s2.name = error* agent.sources.r1.interceptors.i1.serializers.s2.dateFormat = yyyy-MM-dd* </code>* </p>* <pre>* Example 1:* </p>* EventBody: 1:2:3.4foobar5</p> Configuration:* agent.sources.r1.interceptors.i1.regex = (\\d):(\\d):(\\d)* </p>* agent.sources.r1.interceptors.i1.serializers = s1 s2 s3* agent.sources.r1.interceptors.i1.serializers.s1.name = one* agent.sources.r1.interceptors.i1.serializers.s2.name = two* agent.sources.r1.interceptors.i1.serializers.s3.name = three* </p>* results in an event with the the following** body: 1:2:3.4foobar5 headers: one=>1, two=>2, three=3** Example 2:** EventBody: 1:2:3.4foobar5** Configuration: agent.sources.r1.interceptors.i1.regex = (\\d):(\\d):(\\d)* <p>* agent.sources.r1.interceptors.i1.serializers = s1 s2* agent.sources.r1.interceptors.i1.serializers.s1.name = one* agent.sources.r1.interceptors.i1.se

这篇关于flume文件名interceptor的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067423

相关文章

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Linux文件名修改方法大全

《Linux文件名修改方法大全》在Linux系统中,文件名修改是一个常见且重要的操作,文件名修改可以更好地管理文件和文件夹,使其更具可读性和有序性,本文将介绍三种在Linux系统下常用的文件名修改方法... 目录一、引言二、使用mv命令修改文件名三、使用rename命令修改文件名四、mv命令和rename命

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06