利用 Flume Sink 使用一个jar包写入多张表
-
配置
FlumeSink2DB.conf
到flume的conf目录,配置里面FlumeSink2DB的相应字段,名字可以改 -
调用下面的指令启动flume
flume-ng agent -conf-file ../conf/FlumeSink2DB.conf -name agent1 -property flume.root.logger=INFO,console
-
MySqlSink在启动,会到配置agent1.sinks.mysqlSink.tableConfig指向的文件读取配置,可以改为网络访问
详细见同级目录的
db_table_config.yml
-
加载配置后,为每个表生成一个
PreparedStatement
-
在process中,根据每一行传入的数据进行判断使用哪个表的
PreparedStatement
由于来的数据是一行行的,并不知道属于哪个表。希望在记日志时对每一行日志的第一个数据单元做特殊处理
fl-table:tablename,content
-
最后一起提交,完成数据插入
- 代码的严谨性需要在测试中完善
- 相应的jdbc,demo用的mariaDB
下载地址:https://downloads.mariadb.com/Connectors/java/connector-java-2.3.0/mariadb-java-client-2.3.0.jar
- mysql-jdbc
下载地址:https://dev.mysql.com/downloads/connector/j/
- yaml解析库
下载地址:https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar