通过全局搜索 红框这里就是flume采集完数据之后对源文件进行更改名称的地方
标签:
业务场景:需求:通过flume进行数据收罗,将本地(windows处事器)不停孕育产生的csv文件收罗到hdfs上。
问题:本地文件在生成的过程中,会呈现文件名反复的现象。也就是说,在前一秒生成文件名为aaa.csv,该文件颠末flume进行措置惩罚惩罚之后会进行文件名的变动,默认情况下文件名会变动为aaa.csv.COMPLATED,但是在第二秒的时候,接着又生成了aaa.csv文件,此时flume将该文件措置惩罚惩罚完进行更名的过程中,就会报错,例如:
解决:为了制止文件名反复导致flume措施挂的问题,此时有两种解决方案:
1:在生成aaa.csv的过程中对该文件名增加独一标识
2:flume在收罗文件结束后,变动文件名的时候,对其做独一标识
这里主要介绍第二种方法,通过改削源码的方法。
一、flume源码的下载,导入,编译这里我使用的是flume1.9版本
1 下载flume包下载:措施包下载
flume源码下载:源码下载
2 导入IDEA将源码包进行解压,解压之后,解压之后,目录功效如下:
IDEA进行项目的导入
一直点击next,
导入告成之后,项目布局如下所示:
可以看到项目布局式通过各个model来组成的。
3 编译执行命令:mvn clean install -Dmaven.test.skip=true
看到BUILD SUCCESS则代表编译告成,可进行下一步
源码改削这里需要找到flume在收罗完数据之后进行移动目录的阿谁类,这个类一般都是在flume-ng-core这个model下,但是具体是阿谁类,我们可以从flume收罗日志中进行寻找,
从这个日志中可以看到,,flume在收罗完文件后需要对源文件进行一个移动操纵,而也就是在此时进行对文件更名,所以我们可以在源码中找到这个类,通过全局搜索
红框这里就是flume收罗完数据之后对源文件进行更改名称的处所,默认的名称是”.COMPLATED”,此时我们如果为了给文件进行独一性区分,我这里给与增加时间戳的方法:
添加完成之后,对该类进行从头编译,唉对应target文件中找到对应的class文件,将其复制,拷贝替换到线上flume的lib目录下的flume-ng-core.jar包中即可。固然也可以对整个项目进行从头编译打包,只不过那样的话对照麻烦一点而已。
将上面这个jar包使用360压缩一起其他的压缩工具打开,将编译好的class文件笼罩进去即可
然后重新运行flume,可以看到,此时文件名的后缀就会酿成:
告成实现。
flume改削源码实现source文件名前后缀的变动
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31068.html