之前项目中碰到了一些关于flume采集的问题,把一些解决方法介绍一下,用于针对不同需求的采集需求。我所碰到的问题是flume采集mysql中数据的时候,表名不唯一的问题,我们常用flume-sql-source.jar的时候,在配置文件里面会加上 a3.sources.src-1.table=表名 ,这个表名不能更改,比如说每天采集的表名不是一样的,那每天都需要改这里的配置表名,而常用的%y%m%d这种配置是适配不出来每天的日期,因为这个配置会在flume-sql-source中按字符串读进去,并不能适配像shell脚本的匹配日期那样,碰到这种问题,无非是从flume-sql-source入手,更改它读取table字段的方式,制作一个满足特定需求的依赖即可,不用自己再写一个自定义source那么麻烦。
(1)首先查看一下flume-sql-source.jar中的内容,找到读取配置文件并赋值的类的位置,这里我找到位置在org.keedio.flume.source.SQLSourceHelper类中构造方法里面
public SQLSourceHelper(Context context, String sourceName) {
this.statusFilePath = context.getString("status.file.path", "/var/lib/flume");
this.statusFileName = context.getString("status.file.name");
this.connectionURL = context.getString("connection.url");
this.table=context